我有一个TLS / TCP连接到服务器,该服务器将XML文档作为文档流提供。在任何时候,流可能具有:
<doc1>one
)<doc1>one</doc1>
)<doc1>one</doc1><doc2>
)<doc1>one</doc1><doc2>two</doc2>
)当我从流中读取时,我只是将读取数据附加到“未解析”缓冲区,然后尝试使用simplexml_load_string
解析缓冲区。 (1)没问题(失败),(2)没问题(工作),我的问题当然是(3)和(4)因额外数据而失败。我真的没有办法说解析器“只解析前X个字符”(或使用substr),因为这需要实际解析XML。当然,这些文件比例子复杂得多。有没有办法:
感谢。
答案 0 :(得分:0)
回答了我自己的问题。基本上,如果我使用xml_parser_create
和xml_parse
并且Invalid document end
失败,则会通过xml_get_current_byte_index
告诉我失败的地方。然后,我可以在那时取substr
并再次尝试。除了缺乏效率之外,它似乎适用于所列出的所有案例,除非告知失败是否是永久性的......