问题
在我的多行字符串文本 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/