0

以下のようなサンプルxmlファイルがあります。

<Root>
    <SubOne>
       <book author="george" />
       <indiv name="abc" />
       <indiv name="khh" />
       <indiv name="ioo" />
    </SubOne>
    <SubTwo>
       <indiv book author="hamle" />
       <indiv name="kok"/>
       <indiv name="ppp" />
    </SubTow>

</Root>

XPATH で確認する方法はありますか。どんな助けでも大歓迎です

4

2 に答える 2

1

XML最初に、あなたが有効ではないことに気付きました。

XML が次のようになっているとします。

XML:

<Root>
    <SubOne>
        <book author="george"/>
        <indiv name="abc"/>
        <indiv name="khh"/>
        <indiv name="ioo"/>
    </SubOne>
    <SubTwo>
        <book author="hamle"/>
        <indiv name="kok"/>
        <indiv name="ppp"/>
    </SubTwo>
</Root>

XPATH:

には@author='george'、次の XPATH を使用します。

//*[book[@author='george']]/indiv

には@author='hamle'、次の XPATH を使用します。

//*[book[@author='hamle']]/indiv

両方の XPATH で、名前を出力するには@name

ジャワ:

Java を使用して、両方の xpath に対してこの方法を実装する必要があります

について@author='george'は、

String xpath = "//*[book[@author='george']]/indiv";
NodeList nl = (NodeList) xpath.evaluate(xpath, xml, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getAttributes().getNamedItem("name").getNodeValue()); 
}

について@author='hamle'は、

String xpath = "//*[book[@author='hamle']]/indiv";
NodeList nl = (NodeList) xpath.evaluate(xpath, xml, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
    System.out.println(nodes.item(i).getAttributes().getNamedItem("name").getNodeValue()); 
}
于 2012-06-27T19:25:13.283 に答える
0

ノード/Root/ SubTwo/indivにタイプミスがあると思います。これはうまくいくはずです(私はチェックしていません)

/Root/SubOne/book[@author='george']/following-sibling::1/@name | /Root/SubTwo/book[@author='hamle']/following-sibling::1/@name

ユニオンを使用しているため、探しているものとは異なります。

于 2012-06-26T05:55:51.507 に答える