使用.Net检测XML中的两种形式的空元素

时间:2010-11-02 10:28:58

标签: .net xml xmlreader

我遇到了在.Net中解析XML的问题,我需要能够检测到哪种形式的空元素,但似乎无法使其正常工作。基本上在XML格式中,我正在解析以下两个片段应该以不同方式解析:

<sometag />

<sometag></sometag>

我的问题是.Net似乎没有为我提供任何方法来确定上述之间的差异。

使用基于DOM的解析XmlNode将为InnerTextInnerXml报告'“”',OuterXml属性会扩展为第二种形式,无论输入如何XML因此无法基于此进行检测。

使用XmlReader解析两个表单报告IsEmptyElementtrue,我看不到任何其他任何用于检测此属性的属性。 < / p>

任何人都知道有任何方法可以检测基于DOM的解析

1 个答案:

答案 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);
    }
}