XmlDocument删除编码字符

时间:2009-01-19 17:41:45

标签: c# xml encoding

我的C#应用​​程序使用以下代码加载XML文档:

XmlDocument doc = new XmlDocument();
doc.Load(path);

其中一些文档包含编码字符,例如:

<xsl:text>&#10;</xsl:text>

我注意到加载这些文档后,&#10;会被删除。

我的问题:我如何保留<xsl:text>&#10;</xsl:text>

FYI - 用于这些文档的XML声明:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

3 个答案:

答案 0 :(得分:2)

你确定角色掉落了吗?字符10只是换行符 - 它不会完全显示在调试器窗口中。它也可以被视为空格。您是否尝试过使用xmldocument上的空白设置?


如果您需要保留编码,您只有两个选择:CDATA部分或读取为纯文本而不是Xml。我怀疑你完全无法控制进入系统的文件,因此取消了CDATA选项。

纯文本而不是Xml也可能令人反感,但这就是你所剩下的一切。如果您需要进行验证或其他处理,您可以先加载并验证xml,然后使用简单的文件流连接文件作为单独的步骤。再说一次:不理想,但这就是剩下的。

答案 1 :(得分:1)

&#10;是一个换行符 - 即空格。 XML解析器将其作为换行符加载,然后忽略它最初编码的事实。编码只是数据到文本格式序列化的一部分 - 它不是数据本身的一部分。

现在,XML有时会忽略空格,有时则不会,取决于上下文,API等。正如Joel所说,您可能会发现它根本没有丢失 - 或者您可能会发现将它与API一起使用可以保留空白修复了这个问题。当你输出数据时,我不会感到惊讶地看到它变成了一个未编码的换行字符。

答案 2 :(得分:0)

保存数据可能会更好![CDATA]?

http://www.w3schools.com/XML/xml_cdata.asp