我遇到了在.Net中解析XML的问题,我需要能够检测到哪种形式的空元素,但似乎无法使其正常工作。基本上在XML格式中,我正在解析以下两个片段应该以不同方式解析:
<sometag />
和
<sometag></sometag>
我的问题是.Net似乎没有为我提供任何方法来确定上述之间的差异。
使用基于DOM的解析XmlNode
将为InnerText
和InnerXml
报告'“”',OuterXml
属性会扩展为第二种形式,无论输入如何XML因此无法基于此进行检测。
使用 < / p>
XmlReader
解析两个表单报告IsEmptyElement
为true
,我看不到任何其他任何用于检测此属性的属性。
任何人都知道有任何方法可以检测基于DOM的解析
答案 0 :(得分:1)
在第一种情况下IsEmptyElement
在您处于起始元素时返回true
,在第二种情况下返回false
:
while (reader.Read())
{
if (reader.NodeType == XmlNodeType.Element && reader.Name == "sometag")
{
// prints true if <sometag/> and false if <sometag></sometag>
Console.WriteLine(reader.IsEmptyElement);
}
}