0

こんにちは、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
 .
 .
4

1 に答える 1

2

を印刷しようとすると、実際には、呼び出されmerchantsた の長さを繰り返し処理しています。を繰り返す必要があります。category NodeListnodeListnodeList2

for (int  j=0; j < nodeList2.getLength() ; j++){ 
    NodeList nodeList3 = doc.getElementsByTagName("merchantname");
    Element element1 = (Element)nodeList3.item(j);
    System.out.println("--"+element1.getFirstChild().getTextContent());
} 

長さ16nodeListではなく、長さ6を使用していました。上記を使用すると印刷されますnodeList2

--EmaxIPP
--Delma Medical Centre
--Lounge Cafe
--India Palace Restaurant
--Ashas-Wafi
--Dome Cafe
--Delma Medical Center
--Jacky's Electronics
--Dreamland Aqua Park
--Yas Island Rotana
--Dubai Dolpharium
--Autodrome
--Singapore - Grand Hyatt Singapore
--Thailand - Dusit Thani Laguna Phuket
--Joyalukkas
--LifeStyle Fine Jewelry
于 2013-09-15T14:47:12.097 に答える