C++ 检查接收到的XML是否格式正确

C++ 检查接收到的XML是否格式正确,c++,xml,C++,Xml,如何确保XML格式正确?标记被正确嵌套,XML是有序的 警告:没有帮助函数,请实现验证XML是否正确的函数 例如: <person>> //extra closing tags <sex>>female</se>x> <firstname>Amy</firstname> <lastnam>e>Smith</lastnam>e> </

如何确保XML格式正确?标记被正确嵌套,XML是有序的

警告:没有帮助函数,请实现验证XML是否正确的函数

例如:

  <person>> //extra closing tags 
      <sex>>female</se>x>
      <firstname>Amy</firstname>
      <lastnam>e>Smith</lastnam>e>
  </person>>
//额外的结束标记
>女性Alex>
艾米
e> 史密斯>
>
在研究了一些解决方案之后,我尝试实现stack来解决这个问题,但是如果右标签和左标签的数量相同,那么实现就会失败——如上面的示例所示


虽然从堆栈中检索左右标记的数量相等,但XML不正确,这意味着标记位于错误的位置。

我认为您是对的,您必须使用堆栈方法来执行,但对于您提到的示例:

在运行代码之前,应将“”的数目计算为相等


如果number of“”表示Xml内容无效,除非您有特殊要求,否则不要尝试重新发明轮子。如果xml不正确,会有很多xml解析器出现。如果您希望以后能够根据模式验证xml文件,有些人可以这样做

因此,正如Jeff所建议的,我们只需使用xml解析器


你可以通过谷歌
C++xml解析器
找到你所需要的一切,但我很喜欢SO的另一篇文章的介绍

只要把它放到任何(正常的)xml解析器中……请指定你使用的语言(并适当标记你的问题)以便其他用户可以帮助您。@Jeff Mercado:这里的目标是实现XML解析器/序列化验证代码。为什么不查看堆栈,看看是否要添加重复的
?如果你是,它是无效的。我不能马上想出一个他们不应该交替的方法。谢谢你的建议。这是我最近被问到的面试问题之一,所以我正试图找到答案。