获取与XPath表达式匹配的XML节点
我希望你能帮上忙。我在网上尝试了许多XPath测试人员,但没有找到解决方案 我试图从以下XML中获取第一个具有“~tid”属性的节点的值:获取与XPath表达式匹配的XML节点,xpath,xml-parsing,Xpath,Xml Parsing,我希望你能帮上忙。我在网上尝试了许多XPath测试人员,但没有找到解决方案 我试图从以下XML中获取第一个具有“~tid”属性的节点的值: <Response status="ok" version="1.1"> <Action> <Page> <Params> <Para
<Response status="ok" version="1.1">
<Action>
<Page>
<Params>
<Param name="~tid" value="1345811517165"/>
<Param name="~action-type" value="DATA"/>
<Param name="~from-page" value="login"/>
<Param name="~from-act" value="submitData"/>
<Param name="login_USERNAME" value="" type="0"/>
<Param name="login_PASSWORD" value="" type="0"/>
</Params>
</Page>
<Data name="clientData" method="POST">
<Params>
<Param name="timezoneoffset" value=""/>
<Param name="daylightsavings" value=""/>
</Params>
</Data>
</Action>
<Action>
<Page>
<Params>
<Param name="~tid" value="1345811517165"/>
<Param name="~action-type" value="NAV"/>
<Param name="~from-page" value="login"/>
<Param name="~from-act" value="resetPassword"/>
<Param name="~to-page" value="login_resetPassword"/>
</Params>
</Page>
</Action>
<Action>
<Page>
<Params>
<Param name="~tid" value="1345811517165"/>
<Param name="~action-type" value="NAV"/>
<Param name="~from-page" value="login"/>
<Param name="~from-act" value="newUser"/>
<Param name="~to-page" value="login_newUser"/>
</Params>
</Page>
</Action>
</Response>
它获取所有三个值。我怎样才能得到第一个呢?试试看
/descendant::Params[1]/Param[@name='~tid']/@value
从:
注意:位置路径//para[1]
与位置路径/genderant::para[1]
的含义不同。后者选择第一个子para
元素;前者选择作为其父级的第一个子级的所有子级para
元素
这是XPath中第二大常见问题 使用:
(//Params/Param[@name='~tid'])[1]/@value
(//Param[@name='~tid'])[1]/@value
甚至:
(//Params/Param[@name='~tid'])[1]/@value
(//Param[@name='~tid'])[1]/@value
说明:
(//Params/Param[@name='~tid'])[1]/@value
(//Param[@name='~tid'])[1]/@value
XPath伪运算符/
的优先级(优先级)低于[]
运算符
在任何语言中,当需要覆盖默认优先级时,通常的解决方案是使用括号明确指定新的、想要的优先级