[解決済み] XPathで名前空間を無視する方法
2022-08-12 10:44:57
質問
私の目標は、XPath を使用して、複数の名前空間を持つ複数の XML ファイルから特定のノードを抽出することです。名前空間 URI を知っている限り、すべてうまくいきます。名前空間名自体は一定ですが、スキーマ (XSD) はクライアントが生成したもの、つまり、私にはわからないものであることがあります。その場合、基本的に 3 つの選択肢が残されています。
- 名前空間に対してただ 1 つのスキーマを使用し、何も問題がないことを期待する (確信が持てるか?)。
- ドキュメントの子ノードを取得し、名前空間 URI を持つ最初のノードを探し、それがあることを願い、それが正しいものであることを願いながらその URI を使用するだけです。これは複数の理由でうまくいかないことがあります。
- どうにかしてxpathに伝える: "見て、私は名前空間について気にしない、ただこの名前を持つすべてのノードを見つける、私はあなたに名前空間の名前を伝えることもできる、ただURIはダメだ"。そして、これがここでの質問です...
これは、数多くの "名前空間の認識を認識していないため xpath 式が動作しない" という質問の再掲ではありません。 ここで または ここで . 名前空間認識を使用する方法は知っていますが、それを取り除く方法は知りません。
どのように解決するのですか?
を使用することができます。
local-name()
XPath関数です。のようなノードを選択する代わりに
/path/to/x:somenode
を使えば、すべてのノードを選択し、正しいローカル名を持つノードをフィルタリングすることができます。
/path/to/*[local-name() = 'somenode']
関連
-
SAXParseException: ルート要素に続くドキュメント内のマークアップは、うまく処理されなければなりません。
-
[解決済み] PHPでHTML/XMLをパースして処理する方法とは?
-
[解決済み] XMLでタグのブロックをコメントアウトするにはどうすればよいですか?
-
[解決済み] 無名/匿名の名前空間と静的関数の比較
-
[解決済み] Linearレイアウトでボタンを中央に配置する
-
[解決済み】JavaでXPathを使ってXMLを読み込む方法
-
[解決済み] T-SQLでXML文字列の属性にある二重引用符をエスケープするにはどうすればよいですか?
-
[解決済み] XMLで属性値を取得する
-
[解決済み] SVG テキストの自動改行
-
[解決済み] 参照されているアセンブリ PDB および XML ファイルが出力にコピーされないようにする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コマンドラインからXMLをきれいに印刷する方法は?
-
[解決済み] cURL コマンドラインを使用して XML ファイルを POST
-
[解決済み] XPathによる属性の取得
-
[解決済み] foo "を含む属性を選択するための正しいXPathは何ですか?
-
[解決済み] XPath: select text node
-
[解決済み] ある要素のn番目のインスタンスを取得するためのXPathクエリ
-
[解決済み] XML スキーマ。テキストのみを含む属性を持つ要素?
-
[解決済み] Ubuntu 11.04でRパッケージがインストールできない [非公開]
-
[解決済み] XMLで一行だけコメントするにはどうしたらいいですか?
-
[解決済み] 参照されているアセンブリ PDB および XML ファイルが出力にコピーされないようにする