こんにちは、URL から XML データを読み取ろうとしています
XML 構造は次のとおりです。
<specialoffers>
<categories>...</categories>
<categories>...</categories>
<categories>...</categories>
<categories>...</categories>
<categories>...</categories>
<categories>...</categories>
XML :
<specialoffers>
<categories>
<category>
<![CDATA[ 0% Installment Payment Plan Offers ]]>
</category>
<merchants>
<merchantname>
<![CDATA[ EmaxIPP ]]>
</merchantname>
<merchantbigimage>
<![CDATA[
http://www.XXX.com/Images/Emax%20New%20-%20190x73-1_tcm20-48180.jpg]]>
</merchantbigimage>
<merchantsmallimage>
<![CDATA[
http://www.XXX.com/Images/Emax%20New%20-%20104x75-1_tcm20-48179.jpg
]]>
</merchantsmallimage>
<merchantmobileimage>
<![CDATA[ http://www.XXX.com ]]>
</merchantmobileimage>
<mobilehighlight>
<![CDATA[
Enjoy 0% Installment Payment Plan for 3 months on
all purchases made </b>
]]>
</mobilehighlight>
<locations>
<location>
<emirate>
<![CDATA[ XXX]]>
</emirate>
<address>
<![CDATA[ Center 1 ]]>
</address>
<latitude>
<![CDATA[ 51.169601 ]]>
</latitude>
<longitude>
<![CDATA[ 61.240395 ]]>
</longitude>
</location>
</merchants>
</categories>
</specialoffers>
Java コードは次のとおりです。
URL url = new URL(URL);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(url.openStream());
NodeList nodeList = doc.getElementsByTagName("category");
for (int i = 0; i < nodeList.getLength(); i++) {
Element element = (Element)nodeList.item(i);
System.out.println(element.getFirstChild().getTextContent());
NodeList nodeList2 = doc.getElementsByTagName("merchants");
Element getChds = (Element)nodeList2.item(i);
for (int j=0; j < nodeList.getLength() ; j++){
NodeList nodeList3 = doc.getElementsByTagName("merchantname");
Element element1 = (Element)nodeList3.item(j);
System.out.println("--"+element1.getFirstChild().getTextContent());
}
}
すべての「カテゴリ」にカテゴリとマーチャント名を表示しようとしていますが、すべてのカテゴリのカテゴリ名を表示できますが、マーチャント名には失敗します。
実際の xml 文字列は次のとおりです: http://www.adcb.com/specialoffers-test.xml
印刷しよう:
0% Installment Payment Plan Offers
--EmaxIPP
--Delma Medical Centre
.
.
Dining Offers
--Lounge Cafe
--India Palace Restaurant
.
.