使用xmlwriter在c#中编写一个空的xml元素

时间:2011-10-11 14:41:18

标签: c# xml xmlwriter writeelementstring

我正在使用xmlwriter来编辑xml文件,但我需要它来维护一种特定的格式,以便将来与其他xml文件进行比较。

我正在使用以下代码来编写空元素:

w.WriteStartElement("description");
w.WriteEndElement();

xml文件中的结果是:

<description />

这通常会没问题,但我需要它看起来像那样:

<description/>

在“描述”之后没有空格字符。

有什么办法吗?

3 个答案:

答案 0 :(得分:2)

这两种形式都是有效的XML,无论您使用哪种系统都应该能够解析这两种形式,以免 成为XML解析器。

我现在不在我的电脑上,但我觉得这样可行:

Var myModifiedXmlString = w.ToString().Replace(" />", "/>");

答案 1 :(得分:2)

XML不是文本。规则不同。通常,您不能使用文本比较来比较XML文件。您提供的两个示例是相同的XML,但正如您所指出的,它们是不同的文本。

你可以通过预处理要比较的文件来开始处理这个问题,比如把所有属性放在同一个顺序中,也就是每行一个属性;通过将元素放入规范顺序,使用相同名称空间的相同前缀等,然后必须告诉文本比较工具忽略空格等。

答案 2 :(得分:1)

查看XmlWriter.WriteRaw,例如:

w.WriteRaw("<description/>");