8

我需要经常创建 XML 文件,我选择 XmlWrite 来完成这项工作,我发现它花了很多时间在 WriteAttributeString 之类的事情上(在某些情况下我需要写很多属性),我的问题是有没有更好的方法来创建 xml 文件?提前致谢。

4

6 回答 6

6

我知道的最快方法是将文档结构写为纯字符串并将其解析为 XDocument 对象:

string str =
@"<?xml version=""1.0""?>
<!-- comment at the root level -->
<Root>
    <Child>Content</Child>
</Root>";

XDocument doc = XDocument.Parse(str);
Console.WriteLine(doc);

现在,您将拥有一个结构化且可随时使用的 XDocument 对象,您可以在其中填充数据。此外,您甚至可以将完全结构化和填充的 XML 解析为字符串并从那里开始。你也可以像这样使用结构化的 XElements:

XElement doc =
  new XElement("Inventory",
    new XElement("Car", new XAttribute("ID", "1000"),
    new XElement("PetName", "Jimbo"),
    new XElement("Color", "Red"),
    new XElement("Make", "Ford")
  )
);
doc.Save("InventoryWithLINQ.xml");

这将产生:

<Inventory>
  <Car ID="1000">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
</Inventory>
于 2011-04-18T13:19:46.290 回答
3

FileStream通过例如 a (通过手动创建的代码)将其直接写入文件。这可以做得非常,但也很难维护。与往常一样,优化带有奖品标签。

另外,不要忘记“过早优化是万恶之源”。

于 2011-04-18T13:19:19.297 回答
3

XmlSerializer

您只需要定义要序列化的类的层次结构,仅此而已。此外,您可以通过应用于您的属性的一些属性来控制架构。

于 2011-04-18T13:19:37.817 回答
0

如此处所述,使用匿名类型并序列化为 XML 是一种有趣的方法

于 2011-04-18T13:19:40.220 回答
0

多少时间……是 10 毫秒、10 秒还是 10 分钟……编写 Xml 的整个过程有多少?

并不是说你不应该优化,但 imo 问题在于你想花多少时间优化那个微小的过程。最后你想走得越快,在这种情况下维护就越复杂(个人意见)。

于 2011-04-18T13:20:41.390 回答
0

我个人喜欢使用XmlDocument类型。编写节点时仍然有点繁重,但属性是单行的,并且总而言之比使用 Xmlwrite 更简单。

于 2011-04-18T13:22:14.240 回答