我有一个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/

10-11 22:05
查看更多