在我的GWT
网络应用程序中,我将从SOAP
服务器检索XML数据。我没有遇到任何困难解析客户端中的这个xml数据,直到我有这个xml结构来解析:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<data>
<list row="0">
<product_name>A</product_name>
<desc>product A</desc>
<promo>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<data/>
</root>
</promo>
</list>
<list row="1">
<product_name>B</product_name>
<desc>product B</desc>
<promo>
<?xml version="1.0" encoding="UTF-8"?>
<root>
<data>
<list row="0">
<pname>Test</pname>
<pdesc>Test promo only</pdesc>
</list>
</data>
</root>
</promo>
</list>
</data>
<return_code>0</return_code>
</root>
拥有此xml,我已检索到NodeList
和Element
的每个列表的product_name和desc。但我也必须检索每种产品的促销。
我试过通过以下方式获得促销:
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>
任何想法如何获取促销节点内的fields /元素(即pname,pdesc)?
答案 0 :(得分:1)
String promo = d.getElementsByTagName("promo").item(0).getFirstChild().getNodeValue();
您正在循环的每次迭代中查看相同的promo
元素。
将d
替换为list
:
String promo = list.getElementsByTagName("promo").item(0).getFirstChild().getNodeValue();
您将获得每个promo
元素的全文。