确定XmlTextReader.Read()是否读取结束标记

时间:2014-05-15 02:48:36

标签: c# xml parsing

Using XmlTextReader.Read(),如何确定读者读取的是结束/结束标记?

请注意,我不是在寻找XmlTextReader.IsEmptyElement的用法。我想验证是否给出以下XML:

<thistag what="nothing">
   <inside color="cyan"/>
</thistag>

我可以确定我读取的thistag标记是开始标记还是结束/结束标记?

到目前为止,我的解决方案涉及检查是否存在what属性:

if (reader.GetAttribute("what") == null)
{
    // it's an end tag!
}else{
    // it's a start tag!
}

但是我知道这种方法并不那么优雅,如果特定标签不需要属性,它可能会失败。

2 个答案:

答案 0 :(得分:4)

我没试过这个,希望这会有所帮助:

XmlTextReader reader = null;

reader = new XmlTextReader(filename);
while (reader.Read()) 
{
  if(reader.NodeType==XmlNodeType.Element) // for opening tag
  {
    //your code

  }
  else if(reader.NodeType==XmlNodeType.EndElement) // for closing tag
  {
    //your code

  }
}

答案 1 :(得分:1)

XmlNodeType.Element对应于打开节点。 XmlNodeType.EndElement用于关闭节点。