我有以下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文件中显示信息。例如,为了显示每个医生的名字,地址和治疗用他们各自的名字,我有以下代码:
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的诊断节点并在
中显示相关数据答案 0 :(得分:2)
您的代码看起来不正确。您目前每个医生有多个pacient(患者),因此您应该迭代每个医生的患者列表。
然后为每位患者重复疾病。您需要对XML中的每个嵌套使用getElementsByTagName
方法。另外,您需要跳过复数元素,例如<pacients>
。
我建议您使用XPath库,因为它可以使代码更容易阅读。那里有很多好的。我建议jaxen
答案 1 :(得分:0)
我会试试htmlcleaner。
HTMLCleaner是一个Java库,用于安全地解析和转换在Web上找到的任何HTML到格式良好的XML。它设计小巧,快速,灵活且独立。 HtmlCleaner可用于java代码,命令行工具或Ant任务。解析的结果是轻量级文档对象模型,可以很容易地转换为DOM或JDom等标准,或者以各种方式序列化为XML输出(紧凑,漂亮的打印等)。
你可以使用XPath
和htmlcleaner来获取xml标签内的内容。这是一个不错的选择
例如Xpath Example