2012-06-05 3 views
0

Как я могу прочитать третий узел xml, который является продуктом на основе группы продуктов второго узла с использованием java. Я хочу получить продукты на основе кода продуктачитает третий узел xml на основе второго узла в java

  <?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

Так что вы хотите получать коды продукции в определенной категории, не так ли? Вы можете использовать запрос XPath, например «/ Restaurant/ProductGroup [@ id = '2»]/Product/productCode «... или получить продукт с определенным идентификатором из определенной группы:«/Restaurant/ProductGroup [@ id = '2']/Product [productCode = 'aab'] "... или этот, чтобы получить конкретный продукт из любого места документа" // Product [productCode = 'cch'] "... Проверьте XPath API: http://www.ibm.com/developerworks/library/x-javaxpathapi/index.html – toniedzwiedz

+0

Вам нужно использовать XML-парсер для java. [Это] (http://www.java-samples.com/showtutorial.php?tutorialid=152) может вам помочь. – Ved

ответ

0

Существует язык запросов, специально предназначенный для таких задач. Это называется XPath. Вы можете использовать его для выбора определенных узлов из дерева XML, указав путь, аналогичный тому, который вы знаете из вашей операционной системы или веб-адресов. Он также дает вам возможность указать множество условий, которые определяют выбранные вами узлы.

Давайте рассмотрим несколько примеров.

Вы можете использовать запрос XPath, как это, чтобы выбрать все коды продуктов из группы, задаваемого значением его id атрибута:

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

Чтобы получить продукт с определенным ID из конкретной группы 'd хочу добавить другое условие. Следующий запрос также требует Product элемента иметь дочерний элемент, называемый productCode со значением 'aab':

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

Это также можно не указывать всю структуру документа и требует только Product элемента, чтобы быть где-то в документе, а не обязательно в ProductGroup, которая является дочерью ресторана.

//Product[productCode='cch'] 

Существует много учебных пособий по XPath tha, которые помогут вам понять этот простой язык. Это мощный, очень простой в понимании, широко внедренный и не требует, чтобы ваш код был подробным.

Чтобы использовать свою силу в приложение Java, проверить XPath API: http://ibm.com/developerworks/library/x-javaxpathapi/index.html

Смежные вопросы