2011-07-08 21 views
0

DOMパーサを解析中のxmlがあります。 XMLは、私はサブアイテム4までではなく、それの学童に達しています。このダミーのXMLによると、多少、この一連のxmlのネストされたタグを解析する際の問題

<root> 
    <item1> abc </item1> 
    <item2> def </item2> 
    <item3> ghi </item3> 
    <item4> 
     <subItem4> 
       <name> xyz </name> 
       <id> 1 </id> 
     </subItem4> 
     <subItem4> 
       <name> asd </name> 
       <id> 2 </id> 
     </subItem4> 
    </item4> 
</root> 

です。私がしようとしているのは、次のように最奥のアイテムを取得することです:

NodeList slide = theElement.getElementsByTagName( "item4")。item(0).getChildNodes();

 for(int i = 0; i<slide.getLength(); i++) 
     { 
      NodeList subSlides = theElement.getElementsByTagName("subItem4").item(0).getChildNodes(); 

       for (int j=0; j<subSlides.getLength(); j++) 
       { 
        String subSlide_title = subSlides.item(i).getFirstChild().getNodeValue();    

       } 
     } 

が機能しません。誰かが私がどこで構文解析の間違いをしているかを特定することができます。どんな助けもありがとうございます。

答えて

1

有効なXMLを使用していません。タグ名にスペースを入れることはできません。

XML名には空白を使用できません。有効な値はhereを参照してください。


更新(掲載サンプルは実際のXMLの代表であることを次のコメント):

ノードリストのインデクサーを経由してあなたのアクセスが正しくありません。

String subSlide_title = subSlides.item(i).getFirstChild().getNodeValue(); 

は、(代わりにこれを試してみてください内部ループ変数と呼ばれるiの代わりにjを使用します)。

+0

私はこれがあることを知っています実際ではありません。私は意図的に元のxmlにないスペースを与えました。 –

+0

@Usama - あなたが代表的な例を挙げていない場合、どうすれば誰を助けることができますか? – Oded

+0

私はスペースを編集して削除しました。私は元のXMLをここに投稿することはできません。同じパターンのダミーを投稿しました。 –

1
NodeList nodes = doc.getElementsByTagName("item"); 
for (int i = 0; i < nodes.getLength(); i++) { 
    Element element = (Element) nodes.item(i); 
    NodeList nodesimg = element.getElementsByTagName("name"); 
    for (int j = 0; j < nodesimg.getLength(); j++) { 
     Element line = (Element) nodesimg.item(j); 
     String value=getCharacterDataFromElement(line); 
    } 
} 
public static String getCharacterDataFromElement(Element e) { 
    Node child = e.getFirstChild(); 
    if (child instanceof CharacterData) { 
    CharacterData cd = (CharacterData) child; 
    return cd.getData(); 
    } 
    return "?"; 
} 

上記のコードはxmlファイルの解析に役立つと思います。

1

XML要素がすべて混乱しています。 文字通り間違いのない2行があります。例えば

<subItem 4> 

が構文的に間違っていると私はあなたがそれから作ることができる論理どのような意味が表示されません。

あなたは、私はそれは非常に単純ですが、XMLを学ぶお勧めします第4のサブ項目または

<subItem someAttribute="4"> 

のように

<subItem4> 

を意味するか... http://www.w3schools.com/xml/default.asp

+0

@ soBinary ..私はすべての不要なスペースを削除しました。今何か提案してください... –

関連する問題