我在两个不同的文件中使用相同的XML。 在一个文件中,XML缩进 - 另一个不缩进。 XML如下:
<?xml version="1.0" encoding="utf-8" ?>
<test>
<element1></element1>
<element2></element2>
<element3></element3>
</test>
使用以下代码时,我会得到两个文件的不同结果:
XmlReaderSettings settings = new XmlReaderSettings
{
IgnoreComments = true,
IgnoreWhitespace = false,
IgnoreProcessingInstructions = true
};
using (XmlReader reader = XmlReader.Create(invoiceStream, settings))
{
reader.MoveToContent();
reader.Read();
var prevLocalname = reader.LocalName;
var element = XNode.ReadFrom(reader) as XElement;
var newLocalname = reader.LocalName;
}
使用缩进文件,我得到以下值:
prevLocalname = "";
newLocalname = "element1";
如果文件没有缩进,我会得到以下值:
prevLocalname = "element1";
newLocalname = "element2";
任何人都能解释一下吗?
答案 0 :(得分:3)
当然 - 以缩进形式,你有一个文本节点,你得到的本地名称(为空)。然后,您将移动到下一个节点,即element1
元素。
在非缩进形式中,没有文本节点,因此您将获得本地名称element1
,当您移动到下一个元素时,它会读取element2
。
如果你告诉XmlReader
忽略不相关的空格,那么差异就会消失 - 但是你可能会失去想要空白被视为相关的情况。
答案 1 :(得分:0)
您是否设置了以下值?
settings.IgnoreWhitespace = true;
<强> [编辑] 强>
您可能想要更改settings
:
XmlReaderSettings settings = new XmlReaderSettings
{
IgnoreComments = true,
//IgnoreWhitespace = false,
IgnoreWhitespace = true,
IgnoreProcessingInstructions = true
};