2012-01-08 83 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