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)が余分なデータで失敗することです。XMLを実際に解析する必要があるため、パーサーに「最初のX文字を解析する」(またはsubstrを使用する)と言う方法は実際にはありません。もちろん、ドキュメントは例よりもはるかに複雑です。次の方法はありますか?
- simplexml_load_string が余分なデータを無視するようにし、ドキュメントと文字列から消費された文字数を返すようにします (したがって、バッファ操作を行うことができます)。
- 他のパーサー/規則を使用する
ありがとう。