0

我有以下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");

        }

我的问题是,如果我想让每位患者患一种以上的疾病,我如何显示每位患者的所有疾病?我不知道如何“步行”到每个病人的诊断节点并显示里面的相关数据

4

2 回答 2

2

您的代码看起来不正确。您目前每个医生有多个患者(患者),因此您应该为每个医生迭代患者列表。

然后为每个患者迭代疾病。您需要为getElementsByTagNameXML 中的每个嵌套使用该方法。另外,您需要跳过复数元素,例如<pacients>.

我建议您改用 XPath 库,因为它可以使代码更易于阅读。那里有很多好的。我会推荐jaxen

于 2012-01-08T23:17:06.600 回答
0

我会试试htmlcleaner

HTMLCleaner 是一个 Java 库,用于安全地将 Web 上的任何 HTML 解析和转换为格式良好的 XML。它被设计成小巧、快速、灵活和独立。HtmlCleaner 可用于 java 代码,作为命令行工具或 Ant 任务。解析的结果是轻量级的文档对象模型,可以轻松地转换为 DOM 或 JDom 等标准,或以各种方式(紧凑、漂亮打印等)序列化为 XML 输出。

您可以使用XPathhtmlcleaner 来获取 xml 标签中的内容。这是一个很好的
示例Xpath Example

于 2012-01-08T23:29:49.517 回答