我想处理以下xml使用xpath查询
<?xml version="1.0" encoding="UTF-8"?>
<UDSObjectList>
<UDSObject>
<Handle>chg:400106</Handle>
<Attributes>
<Attribute DataType="2002">
<AttrName>chg_ref_num</AttrName>
<AttrValue>123</AttrValue>
</Attribute>
<Attribute DataType="2002">
<AttrName>requestor.combo_name</AttrName>
<AttrValue>ServiceDesk, Administrator </AttrValue>
</Attribute>
<Attribute DataType="2005">
<AttrName>status</AttrName>
<AttrValue>AA</AttrValue>
</Attribute>
<Attribute DataType="2005">
<AttrName>priority</AttrName>
<AttrValue>3</AttrValue>
</Attribute>
<Attribute DataType="2002">
<AttrName>log_agent.combo_name</AttrName>
<AttrValue>ServiceDesk, Administrator </AttrValue>
</Attribute>
<Attribute DataType="2002">
<AttrName>assignee.combo_name</AttrName>
<AttrValue>Smith</AttrValue>
</Attribute>
</Attributes>
</UDSObject>
</UDSObjectList>
我想使用xpath查询得到AttrName ='chg_ref_num'的AttrValue,这将是确切的查询。
我正在尝试使用
"//UDSObject/Attributes/Attribute/AttrValue[AttrName=chg_ref_num]/text()"
但没有获得AttrValue。
答案 0 :(得分:0)
"/UDSObjectList/UDSObject/Attributes/Attribute/AttrName[text()="chg_ref_num"]/parent::*/AttrValue/text()"
答案 1 :(得分:0)
您需要选择父节点以获取正确的元素。因此,使用以下xPath,您将搜索一个Attribute元素,该元素具有一个子节点,该子节点的文本节点具有搜索值。从该Attribute元素中,可以访问AttrValue节点的文本节点。
像这样:
//UDSObject/Attributes/Attribute[./AttrName/text()='chg_ref_num']/AttrValue/text()
答案 2 :(得分:0)
尝试使用following-sibling
轴
//AttrName[.='chg_ref_num']/following-sibling::AttrValue/text()
演示 - http://www.xpathtester.com/obj/c50bed92-850e-41b9-9a01-a5ecea6ead3e