我有一个XML解析器,它对不完整的XML数据崩溃。因此,馈送给它的XML数据可能是以下之一:
<one><two>twocontent</two</one>
<a/><b/> ( the parser treats it as two root elements )
元素属性也被处理(尽管上面没有显示)。
现在,问题是当我从套接字读取数据时,我得到的数据都是碎片。例如:
<one>one
content</two>
</one>
因此,在将XML发送到解析器之前,我必须构造一个有效的XML并将其发送。
哪种编程构造(如迭代,递归等)将最适合这种情况。
我正在用C ++编程。
请帮忙。
最佳答案
有多位作家吗?您的解析器为什么不验证XML?
使用一棵树,其中每个节点代表一个元素,并带有一个脏点。第一次出现该节点会将其标记为脏,即您期望关闭标签,除非该节点的形式当然是<a/>
。另外,您遇到的第一个元素是根。
当您碰到脏节点时,请继续将节点压入堆栈,直到弹出内容时碰到结束标记。
关于c++ - XML解析问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/564367/