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

本文关键字:一个 元素 XML xmlwriter 使用 | 更新日期: 2023-09-27 18:10:53

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

我使用下面的代码来编写空元素:

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

XML文件中的结果是:

<description />

通常是可以的,但我需要它看起来像这样:

<description/>

description后不加空格

有办法吗?

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

XML不是文本。规则是不同的。一般来说,不能使用文本比较来比较XML文件。您给出的两个示例是相同的XML,但是,正如您注意到的,它们是不同的文本。

你可以通过预处理要比较的文件来解决这个问题,比如把所有属性按相同的顺序排列,也许每行一个属性;通过将元素按规范顺序排列,对相同的名称空间使用相同的前缀,等等。然后你必须告诉你的文本比较工具忽略空白等

XmlWriter.WriteRaw,例如:

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

这两种形式都是有效的XML,您使用的任何系统都应该能够解析这两种形式,以免不是 XML解析器。

我现在不在电脑旁,但我觉得这样可以:

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