验证xml的有效方法?

Rac*_*oon 3 c# xml

我需要尽可能快地验证并在socket上接收下一个xml数据.

我正在使用此方法来验证收到的xml-datas.

private validateRecievedXmlCallback()
{
  try
  {      
    XmlReader xreader = XmlReader.Create(new StringReader(xmlData));
    while (xreader.Read()) ;
  }
  catch (Exception)
  {
    return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)

但我认为这种方法效率不高.我实际上只需要检查最后一个标签.

例:

<test valueA="1" valueB="2">
   <data valueC="1" />
   <data valueC="5" />
   <data valueC="5">220</data>
</test>  //I need to check if </test> tag closed, but whats the best way to do it?
Run Code Online (Sandbox Code Playgroud)

Sve*_*ler 6

如果你坚持使用XmlReader,你可以使用XmlReader.Skip(),它会跳过当前元素的内容.

所以

xreader.ReadStartElement("test"); // moves to document root, throws if it is not <test>
xreader.Skip(); // throws if document is not well-formed, e.g. root has no closing tag.
Run Code Online (Sandbox Code Playgroud)

正如其他评论者已经说过的那样,除了使用XML解析器之外,没有什么好的方法可以保证XML文档的良好格式.