Java 使用条件筛选不同内部路径中的XPATH元素
团队成员,我正在学习多个XPATH教程,但无法使用一个XPathExpression实现以下期望 如何获取AccountNumber=AC-12..的PostPaid信息-->活动值和日期值Java 使用条件筛选不同内部路径中的XPATH元素,java,xpath,Java,Xpath,团队成员,我正在学习多个XPATH教程,但无法使用一个XPathExpression实现以下期望 如何获取AccountNumber=AC-12..的PostPaid信息-->活动值和日期值 <params> <param> <value> <struct> <member> <name>PrepaidIn
<params>
<param>
<value>
<struct>
<member>
<name>PrepaidInformation</name>
<value>
<struct>
<member>
<name>activationStatus</name>
<value>
<boolean>1</boolean>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>MixedInformation</name>
<value>
<struct>
<member>
<name>activationStatus</name>
<value>
<boolean>0</boolean>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>PostpaidInformation</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>ActiveValue</name>
<value>
<string>60</string>
</value>
</member>
<member>
<name>Date</name>
<value>
<string>20170225T12:00:00</string>
</value>
</member>
<member>
<name>AccountNumber</name>
<value>
<i4>AC-12</i4>
</value>
</member>
</struct>
</value>
<value>
<struct>
<member>
<name>ActiveValue</name>
<value>
<string>23</string>
</value>
</member>
<member>
<name>Date</name>
<value>
<string>20170225T12:00:00</string>
</value>
</member>
<member>
<name>AccountNumber</name>
<value>
<i4>AC-13</i4>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
</params>
实际答案来自
安德森是
//member/name[text()="PostpaidInformation"]/following-sibling::
value/array/data/value/struct[member[name="AccountNumber"]/value/i4="AC-12"]
har07是
//member[name='PostpaidInformation']//struct[member[name='AccountNumber' and value/i4='AC-12']]/member
你能试试吗
//member/name[text()="PostpaidInformation"][1]/following-sibling::value/array/data/value/struct/member
此XPath
应返回3个成员
节点:
<member>
<name>ActiveValue</name>
<value>
<string>60</string>
</value>
</member>
<member>
<name>Date</name>
<value>
<string>20170225T12:00:00</string>
</value>
</member>
<member>
<name>AccountNumber</name>
<value>
<i4>AC-12</i4>
</value>
</member>
这是一种可能的XPath(为了可读性而包装): 简要说明:
:搜索//成员[name='postaidinformation']
元素,其中成员
子值等于'postaidinformation'名称
:在这样的//struct[member[name='AccountNumber'和value/i4='AC-12']
元素中,搜索包含子元素成员
的后代成员
元素,其中结构
等于'AccountNumber',名称
等于'AC-12'值/i4
:从该/member
返回名为结构
成员的所有子元素
“AC-12”
时,您才希望首先匹配后援信息
?否。后援信息将仅为一个。但它包含多个帐户。其中,如何匹配帐号为“AC-12”的帐户。这是否有什么作用呢?//member/name[text()=“postaidinformation”][1]/下面的兄弟姐妹::value/array/data/value/struct[./member/value/i4=“AC-12”]/member
?当然我会在2分钟内检查并回复您,但[1]在text()=“postaidinformation”][1]这里是什么
谢谢你的解释。你的解释很简洁:)
<member>
<name>ActiveValue</name>
<value>
<string>60</string>
</value>
</member>
<member>
<name>Date</name>
<value>
<string>20170225T12:00:00</string>
</value>
</member>
<member>
<name>AccountNumber</name>
<value>
<i4>AC-12</i4>
</value>
</member>
//member/name[text()="PostpaidInformation"]/following-sibling::value/array/data/value/struct[member[name[.="AccountNumber"]/following-sibling::value/i4="AC-12"]]
//member[name='PostpaidInformation']
//struct[member[name='AccountNumber' and value/i4='AC-12']]
/member