デフォルトの名前空間を使用して XML ドキュメントの XPath を評価するにはどうすればよいですか?

DDD
リリース: 2024-10-24 06:38:30
オリジナル
763 人が閲覧しました

How to Evaluate XPath on XML Documents with Default Namespace?

デフォルトの名前空間を持つ 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 サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!