基于java中的第二个节点读取xml的第三个节点

时间:2012-06-05 09:26:21

标签: java xml

如何使用java读取xml的第三个节点,该节点是基于第二个节点产品组的产品。我想根据产品代码获取产品

            <?xml version="1.0" encoding="UTF-8"?>
            <Restaurant>
                <ProductGroup id="1">
                    <label>BURGERS</label>
                    <image_url>burger.png</image_url>
                    <Product>
                        <label>Hamburger</label>
                        <productCode>aab</productCode>
                        <img_url>Hamburger.png</img_url>
                        <price>129.46</price>
                    </Product>
                    <Product>
                        <label>Cheeseburger</label>
                        <productCode>cch</productCode>
                        <img_url>Cheeseburger.png</img_url>
                        <price>129.46</price>
                    </Product>      
                </ProductGroup>
                <ProductGroup id="2">
                    <label>FRIES/ONION RING</label>
                    <image_url>friesonionring.png</image_url>
                    <Product>
                        <label>Fries</label>
                        <productCode>FRS</productCode>
                        <img_url>fries.png</img_url>
                        <price>50.46</price>
                    </Product>
                    <Product>
                        <label>Onion Rings</label>
                        <productCode>ONR</productCode>
                        <img_url>onionring.png</img_url>
                        <price>50.46</price>
                    </Product>      
                </ProductGroup>
            </Restaurant>

1 个答案:

答案 0 :(得分:0)

有一种专门为这类任务设计的查询语言。它叫做XPath。您可以使用它从XML树中选择特定节点,方法是指定与操作系统或Web地址中的路径类似的路径。它还使您能够指定各种条件,这些条件决定了您选择的节点。

让我们来看看几个例子。

您可以使用此类XPath查询从其id属性的值指定的组中选择所有产品代码:

/Restaurant/ProductGroup[@id='2']/Product/productCode 

要从特定组中获取具有特定ID的产品,您需要添加其他条件。以下查询还要求Product元素具有名为productCode的子元素,其值为“aab'

/Restaurant/ProductGroup[@id='2']/Product[productCode='aab']

也可以不指定文档的整个结构,只需要Product元素位于文档中的某个位置,而不一定是属于Restaurant的子集的ProductGroup。

//Product[productCode='cch']

XPath上有很多教程可以帮助您理解这种简单的语言。它功能强大,易于理解,广泛实现,并且不需要您的代码冗长。

要在Java应用程序中使用它的功能,请查看XPath API:http://ibm.com/developerworks/library/x-javaxpathapi/index.html