【发布时间】:2012-10-05 15:44:31
【问题描述】:
我与将 XML 文档作为文档流提供服务的服务器建立了 TLS/TCP 连接。在任何时候,流都可能有:
- 部分文档(例如
<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。当然,这些文档比示例要复杂得多。有什么办法:
- 让 simplexml_load_string 忽略额外的数据并让它返回一个文档以及它从字符串中消耗的字符数(这样我就可以进行缓冲区操作),或者
- 使用其他解析器/约定
谢谢。
【问题讨论】:
-
您可能需要考虑使用专为流式传输而设计的解析器,例如 XmlReader 或 Xml Parser。