2012-03-21 13 views
0

DOMパーサーを使用してxmlファイルを解析しようとしています。 xmlファイルには多くの不足しているタグが含まれています。 私がしたいことは、欠落しているタグがある場合(たとえば、2番目のアーティストタグの下に画像タグが含まれていない場合など)、「na」のような値としてStringイメージを設定したいからです。配列またはリストAndroid xmlで不足しているタグの解析

以下

<list> 
<artist> 
<id>1</id> 
<name>name1</name> 
<image>name1.jpg</image> 
</artist> 
<artist> 
<id>2</id> 
<name>name2</name> 
</artist> 
</list> 

私の現在のコード例です。

 NodeList list = element.getElementsByTagName("artist"); 
     if (list != null && list.getLength() > 0) { 
      for (int i = 0; i < list.getLength(); i++) { 

       Node item = list.item(i); 

       NodeList properties = item.getChildNodes(); 

       for (int j = 0; j < properties.getLength(); j++) { 

        Node property = properties.item(j); 

        String name = property.getNodeName(); 

        if (name.equalsIgnoreCase("__id")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null ID"); 
         } 

        } 

        else if (name.equalsIgnoreCase("__name")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null Name"); 
         } 

        } 

        else if (name.equalsIgnoreCase("__image")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null Image"); 
         } 

        } 
       }` 

答えて

1

あなたは、アーティストの子タグを解析し、ループに入る直前に割り当てられ、あなたのデフォルトの文字列変数セットを追加します。ループの中で、イメージの子を見つけたら、そのString変数を指定された値に置き換えます。

編集:元に基づいてコード:

 NodeList list = element.getElementsByTagName("artist"); 
     if (list != null && list.getLength() > 0) { 
      for (int i = 0; i < list.getLength(); i++) { 

       Node item = list.item(i); 

       NodeList properties = item.getChildNodes(); 

       String strImage = "na"; // default 

       for (int j = 0; j < properties.getLength(); j++) { 

        Node property = properties.item(j); 

        String name = property.getNodeName(); 

        if (name.equalsIgnoreCase("__id")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null ID"); 
         } 

        } 

        else if (name.equalsIgnoreCase("__name")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null Name"); 
         } 

        } 

        else if (name.equalsIgnoreCase("__image")) { 

         try { 

          String strTitle = property.getFirstChild() 
            .getNodeValue(); 
                  strImage = strTitle; 
          System.out.println(strTitle); 

         } catch (NullPointerException e) { 
          // TODO: handle exception 

          System.out.println("Null Image"); 
         } 

        } 
       } 
      } 
      System.out.println("Image: " + strImage); 
+0

病気、多くの回答が有望に見える..しかし、uは私に任意の実施例または任意のshipnetを(申し訳ありませんアンドロイドに新しいです)を提供してくださいすることができます。.. – ZealDeveloper

+0

のthnxこのコードを試してみて、その仕事があれば教えてください。 – ZealDeveloper

+0

ねえ、私はそれがたくさんの仲間に働いています。 String strImage = "na"を設定するのではなく、少し変更しました。ループの外側では、次のnull strImageの値が以前の値を取得していて、 "na"として初期化されていないため、内部で宣言する必要があります。(古い値は黒のタグを取得すると再発します) :) – ZealDeveloper

関連する問題