如何检查元素标记是否为结束元素

时间:2016-07-28 17:01:55

标签: c# xml

例如,我有以下类型的条件:

if (reader.IsStartElement("element1"))
{
    while (true)
    {
        if (reader.IsStartElement("element2"))
        {
            // Doing stuff
            reader.ReadEndElement(); //closes element2 tag
        }
        else if (reader.IsStartElement("element3"))
        {
           // Doing stuff
           reader.ReadEndElement(); //closes element3 tag
        }
        else if ((!reader.IsStartElement("element2")) 
                && (!reader.IsStartElement("element3")) 
                && (!reader.IsEndElement("element1"))) // THIS IS MY ISSUE
        {
           throw new XmlException("exception");
        }
        else
        {
           reader.ReadEndElement(); //closes element1 tag
        }    
    }
}

我的xml以下列格式编写:

<element1>
    <element2>
    </element2>
    <element3>
    </element3>
</element1>

我想要做的是说element1内部是否有element2element3内的元素,而不是element1的结束元素标记然后抛出我写的异常。问题是没有方法可以检查我可以找到的XmlReader的结束元素标记。我可以查看reader.IsStartElement,但不能查看reader.IsEndElement。有没有其他方法可以检查类型是否是结束元素?

2 个答案:

答案 0 :(得分:4)

您可以检查NodeType,然后使用reader.Name

验证它是否为element1的结束标记。
if (reader.NodeType == XmlNodeType.EndElement)
{
    if(reader.Name == "element1")
    {
        //it's element1 end tag
    }
    else
    {
       //it's the end tag for something else
    }
}

答案 1 :(得分:2)

您应该使用java.util.Scanner scan = new java.util.Scanner(System.in);来浏览XML,并查看读者的NodeType

reader.Read()枚举包含XmlNodeTypeElement的值。