PHP DOM 関数を長期間使用してきたにもかかわらず、元の投稿者 (OP) は、その機能を理解するのが難しいと述べました。彼らは XML サンプルを提供し、遭遇した 2 つの具体的な問題について説明しました。
OP は、ロード中の重複を防ぐために setIdAttribute 関数を使用してページ要素の ID を設定していました。木の中に。ただし、getElementById を使用してこれらの ID を取得しようとすると、課題に直面しました。
解決策:
この問題を解決するには、OP は xml:id 属性を使用することをお勧めします。従来の id 属性の代わりに。このアプローチでは DTD やスキーマは必要なく、DOM は検証なしで ID 属性を認識できます。
ロードされるデータを最小限に抑えるために、OP は最初に ID 属性を作成しました。ページ上で。ただし、getElementById の制限により、必要な情報を取得するために XPath を使用するように切り替えられました。
解決策:
彼らが主張する getElementById に依存する代わりに、プラットフォームでは正しく動作しない場合でも、OP は XPath を利用して、特定のページとその子要素の XML をクエリできます。このソリューションは、必要なデータを取得するための、より効率的で多用途なアプローチを提供します。
例:
XPath を使用して ID「1」の特定のページのすべての商品を取得するには:
<code class="php">$xpath->query('/pages/page[@id="1"]/products');</code>
コメントに応じて、OP はより詳細な説明を提供します:
XML:ID 属性の使用:
xml:id 属性を使用して ID 属性を設定すると、DOM インスタンスは DTD やスキーマを必要とせずにそれを認識できます。これは W3C によって定義されており、プラットフォームや libxml のバージョンとは独立して機能します。
名前空間のない ID 属性の制限:
XML を使用せずに ID 属性が設定されている場合:id 名前空間の場合、DOM はそれを通常の属性として扱います。これを ID 属性として認識するには、DTD またはスキーマを指定し、それに対して XML を検証する必要があります。
XPath は、特に ID 属性が関係する場合、XML ドキュメントをクエリするための多用途で信頼性の高い方法であり続けます。これにより、getElementById への依存関係がなくなり、さまざまな基準に基づいて特定の要素を柔軟に取得できるようになります。
以上がPHP DOM XML 解析をマスターする方法: ID 管理とページ読み込みを簡素化するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。