2012-01-08 86 views
0

走,我有以下XML結構Java的DOM XML解析如何通過多個節點級別

<clinic> 
    <category> 
     <employees> 
      <medic> 
       <medic_details> 
        <medic_name /> 
        <medic_address /> 
       </medic_details> 
       <pacients> 
        <pacient> 
         <pacient_details> 
          <pacient_name> ... 
          <pacient_address> ...    
         </pacient_details> 
         <diagnostic> 
          <disease> 
           <disease_name>Disease</disease_name> 
           <treatment>Treatment</treatment> 
          </disease> 
          <disease> 
           <disease_name>Disease</disease_name> 
           <treatment>Treatment</treatment> 
          </disease> 
         </diagnostic> 
        </pacient> 
       </pacients> 
      <medic> 
     </employees> 
    </category> 
</clinic> 

我有一個JTextArea,我想顯示從XML文件信息。例如,用於顯示每個軍醫,它的名字,ADRESS,並與各自的名稱治療pacients,我有以下代碼:

NodeList medicNList = doc.getElementsByTagName("medic"); 

for (int temp = 0; temp < medicNList.getLength(); temp++) { 

     Node medicNode = medicNList.item(temp); 
     Element eElement = (Element) medicNode; 

     area.append("\n"); 
     area.append("Medic Name : " + getTagValue("medic_name", eElement) + "\n"); 
     area.append("Medic Address : " + getTagValue("medic_address", eElement) + "\n"); 
     area.append("\n"); 
     area.append("Pacients : \n"); 
     area.append("Pacient Name : " + getTagValue("pacient_name", eElement) + "\n"); 
     area.append("Pacient Name : " + getTagValue("pacient_address", eElement) + "\n"); 

     } 

我的問題是,如果我想有每pacient超過1種病,如何顯示每位患者的所有疾病?我不知道如何「步行」到每個pacient的診斷節點並顯示裏面的相關數據

回答

2

您的代碼看起來不正確。您目前每名醫生有多名患者(患者),因此您應該重複每名醫師的患者名單。

然後爲每位患者重複疾病。對於XML中的每個嵌套,您需要使用getElementsByTagName方法。另外你需要跳過複雜的元素,如<pacients>

我建議您使用XPath庫,因爲它可以使代碼更容易閱讀。那裏有很多好玩的。我會推薦jaxen

+0

因此,例如,對於迭代患者列表每個軍醫,我應該有,裏面的「 for「循環,像NodeList pacientNList = medicNode.getElementsByTagName(」pacient「); ? – user573382 2012-01-08 23:43:54

+0

差不多,你需要在醫生節點和pacient兒童之間在pacients節點上做這件事。 – 2012-01-08 23:51:59

0

我會給htmlcleaner一試。

HTMLCleaner是Java庫,用於安全地解析和轉換Web上發現的任何HTML到格式良好的XML。它設計的小巧,快速,靈活和獨立。 HtmlCleaner可用於Java代碼,命令行工具或Ant任務。解析結果是輕量級的文檔對象模型,可以很容易地轉換爲DOM或JDom等標準,或以各種方式(緊湊,漂亮打印等)序列化爲XML輸出。

您可以使用XPath與htmlcleaner到XML tags.Here內獲取內容是一個很好的
例如Xpath Example