[解決済み】XPath:子ノードから親ノードを取得する
2022-04-06 07:11:16
質問
子ノードの親ノードを取得する必要があります。
title 50
今のところ、私が使っているのは
//*[title="50"]
どうすればその親を取得できるのでしょうか?
結果は、次のようになります。
store
ノードになります。
<?xml version="1.0" encoding="utf-8"?> <d:data xmlns:d="defiant-namespace" d:mi="23"> <store d:mi="22"> <book price="12.99" d:price="Number" d:mi="4"> <title d:constr="String" d:mi="1">Sword of Honour</title> <category d:constr="String" d:mi="2">fiction</category> <author d:constr="String" d:mi="3">Evelyn Waugh</author> </book> <book price="8.99" d:price="Number" d:mi="9"> <title d:constr="String" d:mi="5">Moby Dick</title> <category d:constr="String" d:mi="6">fiction</category> <author d:constr="String" d:mi="7">Herman Melville</author> <isbn d:constr="String" d:mi="8">0-553-21311-3</isbn> </book> <book price="8.95" d:price="Number" d:mi="13"> <title d:constr="String" d:mi="10">50</title> <category d:constr="String" d:mi="11">reference</category> <author d:constr="String" d:mi="12">Nigel Rees</author> </book> <book price="22.99" d:price="Number" d:mi="18"> <title d:constr="String" d:mi="14">The Lord of the Rings</title> <category d:constr="String" d:mi="15">fiction</category> <author d:constr="String" d:mi="16">J. R. R. Tolkien</author> <isbn d:constr="String" d:mi="17">0-395-19395-8</isbn> </book> <bicycle price="19.95" d:price="Number" d:mi="21"> <brand d:constr="String" d:mi="19">Cannondale</brand> <color d:constr="String" d:mi="20">red</color> </bicycle> </store> </d:data>
どのように解決するのですか?
を使用します。
parent
斧 を親ノードの名前で指定します。//*[title="50"]/parent::store
このXPathは、親ノードが
store
.しかし、これらのいずれかを使用することもできます。
//*[title="50"]/parent::* //*[title="50"]/..
これらのxpathは、任意の親ノードを選択します。したがって、ドキュメントが変更された場合、それが期待したノードでなくても、常にノードを選択することになります。
EDIT
与えられた例の中で、親が自転車でありながら、親の親が店舗である場合はどうなるのでしょうか?
上昇するのか?
にマッチするノードの親である場合のみ、ストアを選択します。
//*[title="50"]
.そうでない場合、このような場合にascentして、そのような親がいなければNoneを返す方法はないでしょうか?
はい。
ancestor
軸//*[title="50"]/ancestor::store
にマッチするノードのすべての祖先を選択します。
//*[title="50"]
であり、` store' である。例<data xmlns:d="defiant-namespace" d:mi="23"> <store mi="1"> <store mi="22"> <book price="8.95" d:price="Number" d:mi="13"> <title d:constr="String" d:mi="10">50</title> <category d:constr="String" d:mi="11">reference</category> <author d:constr="String" d:mi="12">Nigel Rees</author> </book> </store> </store> </data>
関連
-
[解決済み】XMLファイルに改行を追加する方法は?
-
[解決済み] XMLを解析して、特定のノード属性のインスタンスをカウントするには?
-
[解決済み] XPathによる属性の取得
-
[解決済み] XPathでCSSクラスを指定して要素を検索するにはどうすればよいですか?
-
[解決済み】XPathで属性ノードの値を抽出する
-
[解決済み】XMLで"&"をエスケープするにはどうしたらいいですか?重複
-
[解決済み】XPathで子の子値を元に要素を選択する方法
-
[解決済み】XPathでノードが存在するかどうかを確認する
-
[解決済み] 属性値で要素を選択するXPath
-
[解決済み] XPath: select text node
最新
-
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を用いたIF...THEN...ELSE
-
[解決済み] i:nil="true "とはどういう意味ですか?
-
[解決済み] ノード名の XPath ワイルドカード
-
[解決済み] XMLファイルを別のXMLファイルに取り込むことはできますか?
-
[解決済み] elementFormDefault は XSD で何をするのですか?
-
[解決済み] 大きなファイルのXML分割
-
[解決済み] xlsxのエラーです。"レコードを削除しました。エラーを解決しようとすると、「/xl/workbook.xml 部分から名前付き範囲が削除されました」。
-
[解決済み] デコード � リアルキャラクターへ
-
[解決済み】XMLで無効な文字とは?
-
[解決済み】コンソールとファイルアペンダーを使用した非常にシンプルなlog4j2のXML設定ファイル