Xml 查找节点的XPATH表达式
我在形成正确的xpath表达式以查找xml中的数据时遇到了问题,如下所示:Xml 查找节点的XPATH表达式,xml,xpath,Xml,Xpath,我在形成正确的xpath表达式以查找xml中的数据时遇到了问题,如下所示: <record> <datafield tag="675" ind1=" " ind2=" "> <subfield code="a">791.221.4(71+44+469+450)(086.82)</subfield> <subfield code="c">791.2</subfield> <subfield cod
<record>
<datafield tag="675" ind1=" " ind2=" ">
<subfield code="a">791.221.4(71+44+469+450)(086.82)</subfield>
<subfield code="c">791.2</subfield>
<subfield code="s">791.2</subfield>
<subfield code="b">791.2</subfield>
<subfield code="v">UDCMRF 2006</subfield>
</datafield>
<datafield tag="702" ind1="1" ind2="1">
<subfield code="3">39609187</subfield>
<subfield code="a">Cronenberg</subfield>
<subfield code="b">David</subfield>
<subfield code="f">1943-</subfield>
<subfield code="4">300</subfield>
<subfield code="4">690</subfield>
</datafield>
<datafield tag="702" ind1="0" ind2="1">
<subfield code="3">16448611</subfield>
<subfield code="a">Suschitzky</subfield>
<subfield code="b">Peter</subfield>
<subfield code="4">600</subfield>
</datafield>
<datafield tag="702" ind1="0" ind2="1">
<subfield code="3">8497763</subfield>
<subfield code="a">Shore</subfield>
<subfield code="b">Howard</subfield>
<subfield code="4">230</subfield>
</datafield>
</record>
791.221.4(71+44+469+450)(086.82)
791.2
791.2
791.2
UDCMRF 2006
39609187
克朗伯格
大卫
1943-
300
690
16448611
苏希茨基
彼得
600
8497763
岸
霍华德
230
如何构建一个基本上是这样的表达式:搜索标记值为702的数据字段,并在代码为4的子字段中返回值为300的人的姓氏和姓名,这样在本例中的答案将是Cronenberg David
提前谢谢
datafield[@tag="702"][./subfield[@code="4" and .="300"]]
将选择所需的数据字段元素
datafield[@tag="702"][./subfield[@code="4" and .="300"]]/subfield[@code="a" or @code="b"]/text()
将返回['Cronenberg','David']
,假设子字段在文档中按该顺序出现使用:
/*/*[@tag=702 and subfield[@code=4]=300]
/subfield[@code='a' or @code='b']/text()
您可能对较短的XPath表达式感兴趣。因此,另一种剥猫皮的方法:)也可以,干杯,伙计。@Ales,不客气,伙计——我之所以发布此消息,是因为它稍微短了一点,而且更精简了一点——不需要使用
/
和”/子字段[@code=“4”和[@code=“300”“
可以简单地写成:子字段[@code=4]=300