0

大きな(約200MB)XMLファイルを読み取る必要があります。PHPでxmlreaderを使用しています。エスケープされていないアンパサンドを含むノードURLがあります。解析は常に最初のURLNODEで停止します。XMLファイルのxmlタグで指定されているものと同じエンコーディングwindows-1250を使用しています。

エラーが発生しています:parser error : EntityRef: expecting ';' in

NODEの値が&であるXMLを解析することは可能ですか?

ヒントをありがとうございます。必要に応じてコードを共有できます。

4

2 に答える 2

1

NODEの値が&であるXMLを解析することは可能ですか?

いいえ、つまり、ファイルは整形式のXMLではないため、実際にはXMLファイルとしての資格がなく、XMLファイルパーサーはそれを処理できません。そうでない場合、XMLパーサーにはなりません。

ただし、データをXMLパーサーに渡す前に前処理して、独自の問題(&-> &)を修正することができます。

于 2013-03-01T09:00:07.753 に答える
1

@hakreは正しいです。XMLを解析するには、最初にデータを前処理する必要があります。これは、XMLでは「&」がエンティティにのみ使用されるためです。たとえば、XMLを使用している場合、開始'<'と終了'>'は非常に重要であり、次のノードはパーサーにとって意味がありません。

<object>This object is > than the other object</object>

パーサーは、テキストの途中にある「>」がどこかでタグを閉じようとしていると考えていますが、一致する開始タグがないため、混乱します。そのためには、次のように入力する必要があります。

<object>This object is &gt; than the other object</object>

その他のエンティティには、&lt;およびが含まれます&amp;

于 2015-04-17T00:47:12.910 に答える