代码之家  ›  专栏  ›  技术社区  ›  RobV

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

  •  0
  • RobV  · 技术社区  · 16 年前

    我在.NET中分析XML遇到了一个问题,我需要能够检测到我拥有的空元素的形式,但似乎无法使它正确工作。本质上,在XML格式中,我分析的以下两个片段应该以不同的方式分析:

    <sometag />
    

    和

    <sometag></sometag>
    

    我的问题是.NET似乎没有提供任何方法来确定上述两者之间的区别。

    使用基于DOM的分析 XmlNode 将为两个 InnerText 和 InnerXml 以及 OuterXml 属性扩展到第二个窗体,而不考虑输入XML,因此无法基于该窗体进行检测。

    使用 XmlReader 基于分析两个窗体报表 IsEmptyElement 成为 true 我看不到任何其他的属性来检测这个。

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

    1 回复  |  直到 16 年前
        1
  •  1
  •   Darin Dimitrov    16 年前

    在第一种情况下 IsEmptyElement 收益率 true 当您位于start元素时,在第二种情况下,它将返回 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);
        }
    }