我的C#应用程序使用以下代码加载XML文档:
XmlDocument doc = new XmlDocument();
doc.Load(path);
其中一些文档包含编码字符,例如:
<xsl:text> </xsl:text>
我注意到加载这些文档后,
会被删除。
我的问题:我如何保留<xsl:text> </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">
答案 0 :(得分:2)
你确定角色掉落了吗?字符10只是换行符 - 它不会完全显示在调试器窗口中。它也可以被视为空格。您是否尝试过使用xmldocument上的空白设置?
如果您需要保留编码,您只有两个选择:CDATA部分或读取为纯文本而不是Xml。我怀疑你完全无法控制进入系统的文件,因此取消了CDATA选项。
纯文本而不是Xml也可能令人反感,但这就是你所剩下的一切。如果您需要进行验证或其他处理,您可以先加载并验证xml,然后使用简单的文件流连接文件作为单独的步骤。再说一次:不理想,但这就是剩下的。
答案 1 :(得分:1)
是一个换行符 - 即空格。 XML解析器将其作为换行符加载,然后忽略它最初编码的事实。编码只是数据到文本格式序列化的一部分 - 它不是数据本身的一部分。
现在,XML有时会忽略空格,有时则不会,取决于上下文,API等。正如Joel所说,您可能会发现它根本没有丢失 - 或者您可能会发现将它与API一起使用可以保留空白修复了这个问题。当你输出数据时,我不会感到惊讶地看到它变成了一个未编码的换行字符。
答案 2 :(得分:0)