我需要经常创建XML文件,我选择XmlWrite来完成这项工作,我发现它花了很多时间在像WriteAttributeString这样的东西上(在某些情况下我需要写很多属性),我的问题是有更好的方法来创建xml文件?提前谢谢。
答案 0 :(得分: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>
答案 1 :(得分:3)
通过例如FileStream
(通过手动创建的代码)将其直接写入文件。这可以非常快速,但也很难维护。与往常一样,优化带有奖品标签。
答案 2 :(得分:3)
您只需要定义要序列化的类的层次结构,即全部。此外,您可以通过应用于属性的某些属性来控制架构。
答案 3 :(得分:0)
使用匿名类型和序列化为XML是一种有趣的方法mentioned here
答案 4 :(得分:0)
多少时间......是10毫秒,10秒还是10分钟......写一个Xml的整个过程有多少呢?
并不是说你不应该优化,而是因为你需要花多少时间来优化那一点点的过程。最后,你想要的速度越快,在这种情况下维持的就越复杂(个人意见)。
答案 5 :(得分:0)
我个人喜欢使用XmlDocument
类型。在编写节点时它仍然有点沉重,但是属性是单行的,并且使用Xmlwrite都更简单。