如何使用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>
答案 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