0

次の構造のxmlがあります。

<Root>
  <Sample>
    <Materil material_class="book" />
    <Book Name="harry" Price="8" />
    <Book Name="small things" Price="9" />
    <Book Name="snow" Price="10" />
  </Sample>
 <Commodity>
    <Sample>
        <Materil material_class="sub" />
        <Book Name="sherin" Price="8" />
        <Book Name="bigthings" Price="9" />
        <Book Name="leopard" Price="10" />
    </Sample>
    <Commodity>
         <Sample>
            <Materil material_class="sub" />
            <Book Name="azxcv" Price="86" />
            <Book Name="ddddd" Price="79" />
            <Book Name="qwert" Price="810" />
         </Sample>
    </Commodity>
    <Commodity>
         <Sample>
            <Materil material_class="subtwo" />
            <Book Name="ratnam" Price="86" />
            <Book Name="shantharam" Price="99" />
            <Book Name="da vinci" Price="10" />
         </Sample>
    </Commodity>
 </Commodity>
</Root>

のような条件に基づいてこの xml を反復する方法はmaterial_class = "sub"ありますBookか? の場合は、その下のタグを繰り返します。また、タグの数の長さを取得したい(この場合は 2 つ)。どんな助けでも大歓迎です。私はXPathが初めてです。@Name@Pricematerial_class = "book"Book/Root/Commodity/Commodity

4

2 に答える 2

1

Book@Nameおよび@Pricefor@material_class='sub'またはを取得するには@material_class='book'、この XPATH を使用します

/Root[descendant-or-self::Sample or Sample[descendant-or-self::*]]//*[Materil[@material_class='sub' or @material_class='book']]/Book

また

//Sample[Materil[@material_class='book' or @material_class='sub']]/Book

この XPATH を読み込んだ後、Name use@Nameと Price use を出力します@Price

/Root/Commodity/Commodity タグの数の長さを取得するには、XPATH は

/Root/Commodity/Commodity

また

//Commodity/Commodity

ジャワ:

NodeList node = (NodeList) xpath.evaluate("/Root/Commodity/Commodity", xml, XPathConstants.NODESET);
count = node.getLength(); // OUTPUTS: 2

参考までに、XSLT を使用して実際に XML をレンダリングすると、パフォーマンスが大幅に向上し、実装が容易になります。

于 2012-06-27T18:26:29.797 に答える
0
<xsl:apply-templates select="//Sample[Materil[@material_class='sub']]/Book"/>
<xsl:apply-templates select="//Sample[Materil[@material_class='book']]/Book"/>

私は現在 XSL エディターにアクセスできないため、上記をテストしていませんが、アイデアは得られます。本を選択し、マテリルを必要な条件で制約します。

于 2012-06-27T18:07:38.343 に答える