给定XML的Xpath

时间:2013-09-12 05:46:30

标签: xml xpath

以下是我需要数据的XML

<StyleML>
<transaction>
    <party>
    <partyId>Party1</partyId>
    <partyAlias>
        <partyAliasId>2323</partyAliasId>
        <partyAliasLongName>AQR LP</partyAliasLongName>
         </partyAlias>
         </party>
    <party>
    <partyId>Party2</partyId>
    <partyAlias>
         <partyAliasId>2323</partyAliasId>
         <partyAliasLongName>Scotland</partyAliasLongName>
    </partyAlias>
    </party>
         <transactionParticipant>
              <counterpartyRef>Party2</counterpartyRef>
              <participantType>Counterparty Participant</participantType>
         </transactionParticipant>
         <transactionParticipant>
             <counterpartyRef>Party3</counterpartyRef>
             <participantType>Broker Participant</participantType>
         </transactionParticipant>
    </transaction>
</StyleML>

我需要来自参与类型为对方参与者的一方的partyAliasLongName。

即。在上面的例子中,我想要来自交易参与者的身份为“第2方”的Party的数据,我们可以得出结论,对于counterParty参与者方ID是'Party2'

我想在Xpath中总结这个条件,但是我不知道该怎么做。 任何帮助都会很棒。

3 个答案:

答案 0 :(得分:1)

回应你的后续问题:

也许XQuery路线可能是一个解决方案。

for $x in /StyleML/transaction/transactionParticipant
where $x/counterpartyRef='Party2'
return <result>{data($x/./counterpartyRef)} {data($x/./participantType)}</result>

这将返回结果“Party2 Counterparty Participant”。

答案 1 :(得分:0)

在此处尝试此xPath:

//party[./partyId/text() = //transactionParticipant[./participantType/text() = 'Counterparty Participant']/counterpartyRef/text()]/partyId/text()

您要做的是找到相应括号[]中的条件有效的元素。

E.g。 here您可以测试xPath,对我而言,它正在使用您的示例。

编辑:因此,此xPath搜索其partyId在相应的transactionParticipant中的party元素,该参与者具有participantType“Counterparty Participant”。 text()的内容是添加xml-element的text-node。括号后面的东西然后选择你想要的那些xml元素的子部分。

答案 2 :(得分:0)

我需要来自<partyAliasLongName> <party><participantType>的{​​{1}} {。}}。

包装易读:

//party[
  partyId = //participantType[. = 'Counterparty Participant']/../counterpartyRef
]//partyAliasLongName