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

时间:2014-07-30 03:44:40

标签: c++ xml

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

警告:没有辅助函数,实现验证XML正确的函数。

示例:

  <person>> //extra closing tags 
      <sex>>female</se>x>
      <firstname>Amy</firstname>
      <lastnam>e>Smith</lastnam>e>
  </person>>

在研究了一些解决方案之后,我尝试使用堆栈来解决这个问题,但是如果左右标签的数量相同,那么实现将失败 - 如上例所示。

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

2 个答案:

答案 0 :(得分:1)

恕我直言,除非你有特殊要求,否则不要试图重新发明轮子。如果xml不正确,周围会有许多xml解析器阻塞。如果您以后希望能够针对模式验证xml文件,则有些人可以这样做。

正如Jeff Mercado建议的那样,只需使用xml解析器。

你可以直接谷歌C++ xml parsers找到所需的一切,但我确实喜欢SO What XML parser should I use in C++?的其他帖子的演示文稿

答案 1 :(得分:-1)

我认为你是对的,你必须使用堆栈方法来做,但是对于你提到的例子:

你应该计算“&lt;”的数字和“&gt;”在运行代码之前保持平等。

如果“&lt;”的数量不等于“&gt;”的数量表示Xml内容无效