2011-07-08 51 views
0

我有一個xml,我通過DOM解析器解析。 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> 

的根據這個虛擬的xml我很深遠,直到分項4而不是它的子女。我正在嘗試如下獲取最裏面的項目是:

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(); 

試試這個(使用j而不是i,因爲內環變量被稱爲):

String subSlide_title = subSlides.item(j).getFirstChild().getNodeValue(); 
+0

我知道,這是不是實際的。我有意給予空間,他們不是原來的XML。 –

+0

@Usama - 如果你沒有給出一個具有代表性的例子,誰能提供幫助? – Oded

+0

我已編輯並刪除空間現在告訴我。我不能在這裏發佈原始的XML,那是y貼了一個相同的模式虛擬。 –

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> 

在語法上是錯誤的,我不認爲你可以做什麼邏輯意義出來。

你的意思

<subItem4> 

在第四子項或

<subItem someAttribute="4"> 

我建議你學習XML,這是非常簡單的... http://www.w3schools.com/xml/default.asp

+0

@ soBinary ..我已經刪除了所有不必要的空格,現在請建議一些東西...... –