デフォルトの名前空間を持つ XML ドキュメントでの XPath の使用
問題:
XML での XPath 評価デフォルトの名前空間を持つドキュメントは、特に名前空間 URI を指定しない場合に困難であることがわかります。この問題は、setNamespaceAware に依存しても期待した効果が得られない場合に発生します。
解決策:
デフォルトの名前空間で XPath を効果的に利用するには、次のアプローチを検討してください。
1. NamespaceContext:
NamespaceContext を使用すると、名前空間マッピングを手動で定義でき、XPath フラグメントがプレフィックスなしで名前空間を参照できるようになります。このアプローチにより、プレフィックスの使用が柔軟になり、XPath 式が簡素化されます。
コード例:
<code class="java">// Custom NamespaceContext private static class MyNamespaceContext implements NamespaceContext { public String getNamespaceURI(String prefix) { if ("ns".equals(prefix)) { return "http://www.mydomain.com/schema"; } return null; } } // XPath with NamespaceContext XPath xPath = XPathFactory.newInstance().newXPath(); xPath.setNamespaceContext(new MyNamespaceContext()); NodeList nl = (NodeList) xPath.evaluate("/ns:root/ns:author", dDoc, XPathConstants.NODESET);</code>
2.名前空間参照の回避:
デフォルトの名前空間の使用が避けられない場合は、XPath 式を調整して名前空間参照を完全に削除します。このアプローチでは、適切な XML 構文に従う必要があり、さまざまな XML 解析ライブラリ間で一貫した動作が保証されます。
コード例:
<code class="java">XPath xPath = XPathFactory.newInstance().newXPath(); NodeList nl = (NodeList) xPath.evaluate("/root/author", dDoc, XPathConstants.NODESET);</code>
注:
これらの手法を使用すると、XPath を使用してデフォルトの名前空間で XML ドキュメントを正常に操作できるようになります。特定の XML 構造に一致するように、NamespaceContext または XPath 式内の名前空間宣言を忘れずにカスタマイズしてください。
以上がデフォルトの名前空間を使用して XML ドキュメントの XPath を評価するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。