DOMDocument:重複する要素IDを無視する
-
03-07-2019 - |
質問
一部のページコンテンツ(Tidyを介して実行されていますが、これが問題の原因である場合は必要ありません)を DOMDocument :: loadHTMLを使用して
。 DOMDocument
に入れています
さまざまなエラーが発生しています:
ID xは、エンティティの行Xで既に定義されています
DOMDocument
(またはTidy)に重複する要素IDを無視または削除させる方法はありますか?実際に DOMDocument
を作成しますか?
ありがとう。 :)
解決
件名をすばやく検索すると、この(誤った)バグレポートが明らかになります。
http://bugs.php.net/bug.php?id=46136
最後の返信には次のように記載されています:
HTML 4ルールを使用して、 XHTMLドキュメント。 load()を使用するか XMLまたは libxml_use_internal_errors()関数 警告を無視します。
ロードされているHTMLページへの参照を含めなかったため、同じ理由でこの問題が発生しているかどうかはわかりません。いずれの場合でも、 libxml_use_internal_errors()
は少なくともエラーを抑制する必要があります。
HTMLドキュメントのIDは一般的に一意であり、 最良の解決策は、可能な限りドキュメントを検証することです。
他のヒント
定義により、IDは一意です。そうでない場合は、代わりにクラスを使用する必要があります(該当する場合は名前も使用しないでください)。
XMLツールに強制的に重複IDを無視させることはできません。無効にすると、無効なXMLドキュメントを処理できます。
例外を使用して重複IDを処理し、2番目のIDの名前を変更します。 または、同じ親のサブ要素の要素をIDで結合することもできます。
IDは、XMLファイル(XMLTreeのrootElement内)で一意です