我经常需要创建XML文件,并选择使用XmlWrite来完成这项工作。我发现在一些情况下,它花费了很多时间用于像WriteAttributeString(我需要写很多属性),我的问题是是否有更好的方法来创建XML文件?谢谢。
我经常需要创建XML文件,并选择使用XmlWrite来完成这项工作。我发现在一些情况下,它花费了很多时间用于像WriteAttributeString(我需要写很多属性),我的问题是是否有更好的方法来创建XML文件?谢谢。
我知道的最快的方法是将文档结构写成纯字符串并解析为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>
可以通过例如FileStream
(通过手动创建的代码)直接将其写入文件。这样做可能非常快速,但也很难维护。一如既往,优化是有代价的。
另外,不要忘记“过早优化是万恶之源”。
需要多长时间才算是“很长时间”呢?10毫秒、10秒还是10分钟?写入Xml的整个过程需要多长时间呢?
并不是说你不应该进行优化,但在我看来,这取决于你想花多少时间来优化那些微小的过程。最终,你想要走得越快,在这种情况下就越难以维护(个人意见)。
我个人喜欢使用XmlDocument
类型。虽然写节点时仍有些繁琐,但属性只需一行即可完成,总体而言比使用Xmlwrite要简单得多。