XPath根据兄弟姐妹子值匹配多个节点

时间:2014-02-28 10:48:41

标签: xml xpath

我正在尝试使用Xpath选择文件。如果Xpath在以下位置找到匹配值:

//Party/PartyIdentification/ID[text()="6655779999"])或 (//Party/PartyTaxScheme/CompanyID[text()="US6655779999"]TaxScheme/ID = DEY)或 (//Party/PartyTaxScheme/CompanyID[text()="US6655779999"] AND TaxScheme/ID = BSY

选择正确的文件。

我开始使用://BuyerParty/Party/PartyIdentification/ID[text()="6655779999"],它完美无缺!

但我无法弄清楚如何扩展xpath以检查其他两条路径的DEY和BSY条件。到目前为止,我花了几个星期的时间把论坛里面的内容找到答案,但没有运气。

此OR条件的共振是xml文件中可能存在一个,两个或所有三个元素。我以前不知道哪一个。我需要获得上述三个匹配条件中的至少一个匹配,以确保选择正确的文件。

关于如何解决这个问题的任何想法?

<ROOT>
<BuyerParty>
    <Party>
        <PartyIdentification>
            <ID>6655779999</ID>
        </PartyIdentification>
        <PartyName>
            <Name>Charly</Name>
        </PartyName>
        <Address>
            <StreetName>El Cajon Boulevard</StreetName>
            <CityName>San Diego</CityName>
            <PostalZone>92104</PostalZone>
            <Country>
                <IdentificationCode>US</IdentificationCode>
            </Country>
        </Address>
        <PartyTaxScheme>
            <CompanyID>US11432112341</CompanyID>
            <TaxScheme>
                <ID>DEY</ID>
            </TaxScheme>
        </PartyTaxScheme>
        <PartyTaxScheme>
            <CompanyID>US1143211234</CompanyID>
            <TaxScheme>
                <ID>BSY</ID>
            </TaxScheme>
        </PartyTaxScheme>
        <Contact>
            <Telephone>555-5555555</Telephone>
        </Contact>
    </Party>
</BuyerParty>

1 个答案:

答案 0 :(得分:2)

您可以使用|(或)选择器

//Party/PartyIdentification/ID[text()="6655779999"]|//Party/PartyTaxScheme/CompanyID[following-sibling::TaxScheme/ID = 'DEY' or following-sibling::TaxScheme/ID = 'BSY'][text()="US11432112341"]