2013-10-15 59 views
0

我的XML字符串解析XML是這樣的:
無法使用jsoup

<facebookfriends> 
    <data> 
     <id> 501334283</id> 
     <location> 
      <id>46464 </id> 
      <name>abc </name> 
     </location> 
     <name> Name Something</name> 
     <education> 
      <school> 
       <id> 45454 </id> 
       <name> SSSSSSSSSS</name> 
      </school> 
      <year> 
       <id> 45353</id> 
       <name> 2001</name> 
      </year> 
      <type>High School </type> 
     </education> 
     <education> 
      <school> 
       <id> 
        134960646529265</id> 
       <name> SSS , University</name> 
      </school> 
      <year> 
       <id> 132393000129123</id> 
       <name> 2001</name> 
      </year> 
      <type>High School </type> 
     </education> 
     <education> 
      <concentration> 
       <id> 6868</id> 
       <name> Computer Science and Engineering 
       </name> 
      </concentration> 
      <school> 
       <id> 86868</id> 
       <name> 
        Hellio 
       </name> 
      </school> 
      <year> 
       <id> 4646</id> 
       <name> 2008</name> 
      </year> 
      <type>College </type> 
     </education> 

    </data> 
    <data>XYZ</data> 
</facebookfriends> 

我怎樣才能得到教育列表意味着學校名稱。我的要求是這樣的,從第一個數據標籤開始和數據獲取教育詳細信息列表,然後第二個數據標籤開始,第二個數據標籤結束和第三個等。所以我嘗試過這樣,但不能獲取數據。

StringReader reader = new StringReader(xmlbody);//XML body is my xml string 
    InputSource source = new InputSource(reader); 
    Document document = dbBuilder.parse(source); 
    NodeList dataList = document.getElementsByTagName("data"); 
     for(int i=0;i<dataList.getLength();i++) { 
      Node node = dataList.item(i); 
      if(node.getNodeType() == Node.ELEMENT_NODE) { 
       Element data = (Element)node; 

     org.jsoup.nodes.Document xmlDoc = Jsoup.parse(data.getTextContent(), "", Parser.xmlParser()); 

        for (org.jsoup.nodes.Element e : xmlDoc.select("education")) { 
         System.out.println(e); 
        } 

      } 
          } 

預期輸出:在第一次重複我想:SSSSSSSSSS,SSS,大學,Hellio

請幫助

+0

請格式化你的代碼,我們應該看看這個?目前的產出是多少? – Daniel

+0

它不會進入for循環,也不會打印任何東西 – Sthita

回答

1

看看在XML的結構。

如果你想在學校的名字,那麼它的結構如下:

<education> 
     <school> 
      <name> 

要選擇,只需使用

Document doc = Jsoup.parse(xml); 
    Elements e = doc.select("education school name"); //Tree structure for tags 
    for (Element el : e) { 
     System.out.println(el.text()); 
    } 

這將輸出

run: 
SSSSSSSSSS 
SSS , University 
Hellio 
+0

是的它的工作,其實我是新來的jsoup和錯誤的嘗試,現在它很好使用我們的代碼。我發現jsoup是一個非常好的解析工具。@ Daniel B謝謝。 – Sthita