从XML元素中读取空格字符

本文关键字:空格 字符 读取 XML 元素 | 更新日期: 2023-09-27 17:58:31

这次是一个非常简单的问题!:-)有这样一个XML文件:

<xml>
  <data> </data>
</xml>

现在我需要准确地读取<data>元素中的内容。可以是像U+0020这样的单个空格。我天真的猜测:

XmlDocument xd = new XmlDocument();
xd.Load(fileName);
XmlNode xn = xd.DocumentElement.SelectSingleNode("data");
string data = xn.InnerText;

但这会返回一个空字符串。空白处消失了。任何其他数据都可以很好地读取。

我需要做些什么才能将我的空间角色放到这里?

在浏览了一段时间后,我尝试使用XmlReader读取XML文件,该文件允许我设置XmlReaderSettings.IgnoreWhitespace = false,但没有帮助。

从XML元素中读取空格字符

根据W3C标准和MSDN文档,您必须在XML中使用xml:space="preserve"

W3C标准规定以不同方式处理空白取决于它在文档中的位置,以及xml:space属性的设置。如果字符出现在混合元素内容或在xml:space="preserve"的范围内,它们必须在不修改的情况下保存和传递应用不需要保留任何其他空白。这个XmlTextReader只保留出现在xml:space="保留"上下文。

        XmlDocument xd = new XmlDocument();
        xd.LoadXml(@"<xml xml:space=""preserve""><data> </data></xml>");
        XmlNode xn = xd.DocumentElement.SelectSingleNode("data");
        string data = xn.InnerText; // data == " "
        Console.WriteLine(data == " "); //True

在这里测试。