我想根据孩子的文本值选择一个节点。 我的结构如下(抱歉德国节点):
<InspizierteAbwassertechnischeAnlage>
<Objektbezeichnung>10502002</Objektbezeichnung>
<Anlagentyp>1</Anlagentyp>
</InspizierteAbwassertechnischeAnlage>
如何选择<InspizierteAbwassertechnischeAnlage>
节点,例如<Objektbezeichnung>
= 10502002?
答案 0 :(得分:1)
ancestor:://*[text()='10502002']
在语法上是不正确的,它不是有效的XPath。我不确定你在这里尝试做什么。
//*[text()='10502002']
本身只会选择Objektbezeichnung
本身,而不是其父级。它还会选择具有此类值的任何其他元素,而不管其名称如何。如果是本文档,则不会返回任何冗余,但在使用通配符时必须小心(*
)
这很简单,您必须使用谓词来检查子元素的内容
//InspizierteAbwassertechnischeAnlage[Objektbezeichnung = '10502002']
请注意双斜杠(//
),它是descendant-or-self
轴的abbreviated syntax 。上述表达式转换为:
/descendant-or-self::InspizierteAbwassertechnischeAnlage[Objektbezeichnung = '10502002']
或者用简单的英语
在文档根目录的所有后代的集合中,查找包含至少一个
InspizierteAbwassertechnischeAnlage
元素的Objektbezeichnung
元素,其值为10502002
至于德国元素名称,至少它不是Hottentottenstottertrottelmutterbeutelrattenlattengitterkofferattentäter或Rhababerbarbarabarbarbarenbartbarbierbierbarbärbel