2012-03-08 15 views
0

,我將從SOAP服務器檢索XML數據。我還沒有遇到客戶端解析XML數據的任何困難,直到我有這樣的XML結構解析:在我的<code>GWT</code> web應用程序中使用XMLParser解析GWT中的XML

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <data> 
    <list row="0"> 
     <product_name>A</product_name> 
     <desc>product A</desc> 
     <promo> 
     &lt;?xml version="1.0" encoding="UTF-8"?&gt; 
     &lt;root&gt; 
      &lt;data/&gt; 
     &lt;/root&gt; 
     </promo> 
    </list> 
    <list row="1"> 
     <product_name>B</product_name> 
     <desc>product B</desc> 
     <promo> 
     &lt;?xml version="1.0" encoding="UTF-8"?&gt; 
     &lt;root&gt; 
      &lt;data&gt; 
       &lt;list row="0"&gt; 
       &lt;pname&gt;Test&lt;/pname&gt; 
       &lt;pdesc&gt;Test promo only&lt;/pdesc&gt; 
       &lt;/list&gt; 
      &lt;/data&gt; 
     &lt;/root&gt; 
     </promo> 
    </list>  
    </data> 
    <return_code>0</return_code> 
</root> 

有此XML,我已經檢索到的每個列表的PRODUCT_NAME和遞減與NodeListElement。但我也必須檢索每個產品的促銷。

我試圖通過獲取促銷:

Document d = XMLParser.parse(xml); // xml - xml data retrieved from server 
Element element = d.getDocumentElement(); 
NodeList nlist = element.getElementsByTagName("list"); 
final int count = nlist.getLength(); 

for(int i = 0; i < count; ++i) { 
    final Element list = (Element) nlist.item(i); 
    String product_name = ((Text)list.getElementsByTagName("fproductid") 
     .item(0).getFirstChild()).getData() 
    ... 

    // get promo 
    String promo = d.getElementsByTagName("promo").item(0). 
     getFirstChild().getNodeValue(); 
    Document dpromo = XMLParser.parse(promo); 
    ... 
} 

當我檢查什麼是每個促銷的價值,我有相同的輸出:

<?xml version="1.0" encoding="UTF-8"?> 
<root> 
    <data/> 
</root> 

任何想法如何獲得場/促銷節點內的元素(即pname,pdesc)?

回答

1

String promo = d.getElementsByTagName("promo").item(0).getFirstChild().getNodeValue();

您正在尋找在每次循環相同promo元素。

更換dlist

String promo = list.getElementsByTagName("promo").item(0).getFirstChild().getNodeValue();

,你會得到每個promo元素全文。

相關問題