0

这段代码:

XmlNode columnNode = null;                               
columnNode = xmlDoc.CreateElement("SYSID");
columnNode.InnerText = ""; // Empty string
newRowNode.AppendChild(columnNode);

...做这个:

<SYSID>
</SYSID>

我想要这个,当字符串为空时:

<SYSID></SYSID>

有什么解决办法吗?

4

1 回答 1

2

如果您有另一个需要该格式的工具,那么另一个工具是错误的 - 它无法读取 XML。因此,如果您可以控制其他工具,我建议您修复它,而不是试图强迫您的代码匹配它。

如果您无法修复其他工具...

如果您只是构建一个 Document 以将其写入磁盘,那么您可以使用流并自己直接写入元素(作为简单文本)。这将比使用 XmlDoc 更快(并且可能更容易)。

作为对此的改进,您可以使用 XmlWriter 写入元素,但是当您写入空元素时,将原始文本写入流(即 writer.WriteRaw("<SYSID></SYSID>\n ")) 以便您控制这些特定元素的格式。

如果您需要构建内存中的 XmlDocument,那么在很大程度上,您必须忍受它在要求将其序列化到磁盘时使用的格式(除了 PreserveWhitespace 等基本设置,您要求文档处理存储信息,因此您对 XmlDocument 封装的功能失去了很多控制)。在这种情况下,我能想到的最佳建议是将 XmlDocument 写入 MemoryStream,然后对该内存流进行后处理以从空元素中删除换行符。(呸!)

于 2012-11-16T12:47:44.710 回答