Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 什么';这是编写XML的最快方法_C#_.net_Xml_Xmlwriter - Fatal编程技术网

C# 什么';这是编写XML的最快方法

C# 什么';这是编写XML的最快方法,c#,.net,xml,xmlwriter,C#,.net,Xml,Xmlwriter,我需要经常创建XML文件,我选择XmlWrite来完成这项工作,我发现它在WriteAttributeString(在某些情况下我需要编写很多属性)等方面花费了很多时间,我的问题是有没有更好的方法来创建XML文件?提前感谢。通过例如FileStream(通过手动创建的代码)将其直接写入文件。这可以做得很快,但也很难维护。和往常一样,优化带有奖牌 另外,不要忘记“。 仅需定义要序列化的类的层次结构即可。此外,您还可以通过应用于属性的某些属性来控制架构。使用匿名类型并序列化为XML是一种有趣的方法,

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

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

另外,不要忘记“。


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

使用匿名类型并序列化为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);
这将产生:

<Inventory>
  <Car ID="1000">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
</Inventory>

金波
红色
河流浅水处

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


不是说你不应该优化,但在我看来,这是一个你想花多少时间来优化这一微小的过程的问题。最后,你想走得越快,在这种情况下维护起来就越复杂(个人观点)。

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

您知道XML序列化吗?实例化一个类型,填充属性,然后将其序列化,以创建一个表示对象状态的XML文档。XmlWriter是编写XML的最快方法。定义“更快”。写/调试速度更快还是执行速度更快?答案会有所不同。可能不是WriteAttributeString才是瓶颈,而是用于向其提供数据的代码成本高昂吗?例如,一个属性在运行它的“get”时做了太多的工作?我觉得这不是很有效,因为在运行时之前你无法检测结构错误和打字错误。然后你可以像示例中那样使用结构化的XElement对象。
<Inventory>
  <Car ID="1000">
    <PetName>Jimbo</PetName>
    <Color>Red</Color>
    <Make>Ford</Make>
  </Car>
</Inventory>