[解決済み] XPath - 値が等しい要素を選択する
2022-03-08 18:41:34
質問
Xpathで、特定の値に等しい要素を選択したい。
サンプルXMLデータです。
<aaa id="11" >
<aaa id="21" >
<aaa id="31" ></aaa>
<bbb id="32" >
<aaa id="41" ></aaa>
<bbb id="42" ></bbb>
<ccc id="43" ></ccc>
<ddd id="44" >qwerty</ddd>
<ddd id="45" ></ddd>
<ddd id="46" ></ddd>
</bbb>
</aaa>
<bbb id="22" >
<aaa id="33" >qwerty</aaa>
<bbb id="34" ></bbb>
<ccc id="35" ></ccc>
<ddd id="36" ></ddd>
<ddd id="37" ></ddd>
<ddd id="38" ></ddd>
</bbb>
<ccc id="23" >qwerty</ccc>
<ccc id="24" ></ccc>
</aaa>
では、XPathを使って。
//ccc[.='qwerty']
正しく取得します。 期待される の結果が得られます。
Name Value
ccc qwerty
では、XPathを使って。
//aaa[.='qwerty']
私は 予期せぬ の結果が表示されます。
Name Value
aaa
aaa qwerty
そして、私が特に興味を持っているのは、どのように選択するかです。 任意の その値を持つ要素
XPathです。
//*[.='qwerty']
私は非常に奇妙な取得 予期せぬ の結果が得られます。
Name Value
aaa
bbb
ddd qwerty
bbb qwerty
aaa qwerty
ccc qwerty
この結果について、また、より期待通りの結果を得るために私のXPath式を修正する方法について、どなたか説明していただけませんか?
どのように解決するのですか?
XPath 仕様では 文字列の値 は、その要素のすべてのテキストノードの子孫の(文書順の)連結です。 .
これで "strange results" が説明できます。
以下の式を用いると、より良い結果が得られます。
//*[text() = 'qwerty']
上記は、ドキュメント内の少なくとも一つのtext-nodeの子要素が値'qwerty'を持つすべての要素を選択する。
//*[text() = 'qwerty' and not(text()[2])]
上記は、ドキュメント内で text-node の子を1つだけ持ち、その値が 'qwerty' であるすべての要素を選択するものである。
関連
-
[解決済み] XPathでnot contains()を使うには?
-
[解決済み] エンベロープスキーマを使用したxmlDisassemblerでのデバッチが、空のメッセージで失敗する。
-
[解決済み] normalize-space(.)とnormalize-space(text())の違いは何ですか?
-
[解決済み] 異なるノードに対する XPath OR 演算子
-
[解決済み] XPath - 値が等しい要素を選択する
-
[解決済み] Xpath: クラスを含み、かつ特定の子要素がテキストを含む div を選択する。
-
[解決済み】XPathを使用して、特定の属性を持つ最初の要素を選択する方法
-
[解決済み] XPath contains(text(),'some string') は、複数の Text サブノードを持つノードで使用すると動作しません。
-
[解決済み】XPath:その値に基づいて要素を選択するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] XPathでnot contains()を使うには?
-
[解決済み] エンベロープスキーマを使用したxmlDisassemblerでのデバッチが、空のメッセージで失敗する。
-
[解決済み] normalize-space(.)とnormalize-space(text())の違いは何ですか?
-
[解決済み] 異なるノードに対する XPath OR 演算子
-
[解決済み] XPath - 値が等しい要素を選択する
-
[解決済み] Xpath: クラスを含み、かつ特定の子要素がテキストを含む div を選択する。
-
[解決済み】XPathを使用して、特定の属性を持つ最初の要素を選択する方法
-
[解決済み] XPath contains(text(),'some string') は、複数の Text サブノードを持つノードで使用すると動作しません。