c# - IgnoreWhiteSpace 不忽略 xml 字符串开头的空格

标签 c# xml xml-parsing xmlreader

问题
在我的多行字符串文本 xml 的开头是否应该忽略空格?

代码

string XML = @"
            <?xml version=""1.0"" encoding=""utf-8"" ?>"

using (StringReader stringReader = new StringReader(XML))
using (XmlReader xmlReader = XmlReader.Create(stringReader,
    new XmlReaderSettings() { IgnoreWhitespace = true }))
            {
                xmlReader.MoveToContent();
                // further implementation withheld
            }

请注意,在上面的代码中,在 XML 声明之前有一个空格,尽管我设置了 IgnoreWhiteSpace 属性,但这似乎并没有被忽略。我哪里错了?!

注意:当 XML 字符串没有换行符而只有一个空格时,我有相同的行为,如下所示。我知道如果我删除空格这将运行,我的问题是为什么属性不处理这个问题?

string XML = @" <?xml version=""1.0"" encoding=""utf-8"" ?>"

最佳答案

文档说 IgnoreWhitespace 属性将“获取或设置一个值,指示是否忽略无关紧要 空白。”。虽然第一个空格(以及换行符)应该是微不足道的,但创建 XmlReader 的人显然不这么认为。只需在使用前修剪 XML,就可以了。

如评论中所述,为了清楚起见,将您的代码更改为:

string XML = @"<?xml version=""1.0"" encoding=""utf-8"" ?>"

using (StringReader stringReader = new StringReader(XML.Trim()))
using (XmlReader xmlReader = XmlReader.Create(stringReader,
new XmlReaderSettings() { IgnoreWhitespace = true }))
        {
            xmlReader.MoveToContent();
            // further implementation withheld
        }

关于c# - IgnoreWhiteSpace 不忽略 xml 字符串开头的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41167700/

相关文章:

c# - Unity - WaitForSeconds() 不起作用

java - 在 netbeans 中清理和构建后从 dist 文件夹运行 jar 文件时不读取 xml 文件

c# - 如何解析 KML 文件以从 Placemark 元素检索坐标点?

javascript - jQuery XML 错误 ' No ' Access-Control-Allow-Origin' header 存在于请求的资源上。'

c# - mvc 经典 sql 与 EF

c# - <schema> 级别的 XmlSchema 读取注释

java - 当 XML 中有更多字段时 xStream 崩溃

xmllint:使用以下方式从列表中获取项目

c# - 可以从 Javascript 使用独立存储吗?

xml - xsd :sequence behavior inside a xsd:all? 的替代方案是什么