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>

xml ファイルからの情報を表示したい JTextArea があります。たとえば、各メディックを名前、住所とともに表示し、患者をそれぞれの名前で治療するには、次のコードを使用します。

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

Your code looks incorrect as it is. You currently have multiple pacient (patients) per medic so you should be iterating the list of patients for each medic.

Then iterate diseases for each patient. You need to use the getElementsByTagName method for each nesting in the XML. Plus you need to skip over the pluralised elements such as <pacients>.

I would suggest you use an XPath library instead as it can make the code a lot easier to read. There are plenty of good ones out there. I would recommend jaxen

于 2012-01-08T23:17:06.600 に答える
0

htmlcleanerを試してみます。

HTMLCleaner は、Web で見つかった HTML を安全に解析し、整形式の XML に変換するために使用される Java ライブラリです。小さく、高速で、柔軟性があり、独立しているように設計されています。HtmlCleaner は、コマンド ライン ツールまたは Ant タスクとして Java コードで使用できます。解析の結果は軽量のドキュメント オブジェクト モデルであり、DOM や JDom などの標準に簡単に変換したり、さまざまな方法 (コンパクト、きれいに印刷など) で XML 出力にシリアル化したりできます。

XPathhtmlcleaner を使用して、xml タグ内のコンテンツを取得できます。これは、良い
例ですXpath Example

于 2012-01-08T23:29:49.517 に答える