Heim > Java > Hauptteil

Rufen Sie Daten aus einem XML-Dokument mithilfe von DOM in Java ab

王林
Freigeben: 2024-02-22 13:01:14
nach vorne
382 Leute haben es durchsucht

Der

php-Editor Strawberry zeigt Ihnen, wie Sie DOM verwenden, um Daten aus XML-Dokumenten in Java abzurufen. DOM (Document Object Model) ist eine Standardmethode zur Verarbeitung von XML-Dokumenten. Durch die Manipulation der XML-Baumstruktur können wir leicht Informationen wie Knoten, Elemente und Attribute erhalten. In Java können wir den DOM-Parser nutzen, um XML-Dokumente zu lesen und die erforderlichen Daten zu extrahieren. Anschließend können wir die Knoten des XML-Dokuments durchlaufen und die Daten extrahieren, die wir für flexible und effiziente Datenerfassungsvorgänge benötigen.

Frageninhalt

Ich versuche, eine XML-Datei mit dom zu analysieren, gebe am Ende jedoch mehrmals (in einer Schleife) nur den letzten Eintrag aus. Bitte sagen Sie mir, gibt es ein Problem? (Ich bin ein Anfänger in Java)

xml enthält ungefähr den folgenden Inhalt:

<channel>
    <title>www.google.com</title>
    <item>
        <title>www.youtube.com</title>
    </item>
    <item>
        <title>play.google.com</title>
    </item>
    ...
</channel>
Nach dem Login kopieren

Java-Code:

Node item = null;
    NodeList channelList = document.getElementsByTagName("channel");
    for (int i = 0; i < channelList.getLength(); i++){

        if (channelList.item(i).getNodeType() == Node.ELEMENT_NODE){
            
            NodeList channelListChild = channelList.item(i).getChildNodes();
            for (int j = 0; j < channelListChild.getLength(); j++){
                if (channelListChild.item(j).getNodeType() == Node.ELEMENT_NODE){

                    switch (channelListChild.item(j).getNodeName()){
                        case "title":{
                            String title = channelListChild.item(j).getTextContent();
                            System.out.println(title);
                            break;
                        }
                        case "item":{
                            item = channelListChild.item(j);
                            break;
                        }
                    }
                }
            }
        }
    }
    if (item == null){
        return;
    }

    String title = null;
    NodeList itemList = item.getChildNodes();

    for (int i = 0; i < itemList.getLength(); i++){
        if (itemList.item(i).getNodeType() == Node.ELEMENT_NODE){

            switch (itemList.item(i).getNodeName()){
                case "title":{
                    title = itemList.item(i).getTextContent();
                    break;
                }
            }
        }
        System.out.println(title);
    }
Nach dem Login kopieren

Workaround

Sie weisen der Reihe nach die Variable „item“ jedem Element in der Schleife zu, sodass ihr Wert beim Verlassen das letzte item angetroffene Element ist.

Sie sind nicht der Einzige, der Java und Dom in solchen Anwendungen verwendet; es ist eine beliebte Kombination. Aber es ist fast 25 Jahre alt und es gibt viele bessere Optionen. Auch wenn es Java sein muss, gibt es andere APIs wie jdom2 und xom, die benutzerfreundlicher sind.

Saxons Baumnavigations-API (inspiriert von Linq in der C#-Welt) sieht so aus:

XdmNode channel = document.getOutermostElement();
String title = channel.select(child("title")).asString();
System.out.println(title);
channel.select(child("item")).forEach(item -> {
   String subtitle = item.select("title").asString();
   System.out.println(subtitle);
}
Nach dem Login kopieren

Dies ist ein Bruchteil der entsprechenden Länge des Dom-Codes.

[Haftungsausschluss: Saxon ist das Produkt unseres Unternehmens]

Das obige ist der detaillierte Inhalt vonRufen Sie Daten aus einem XML-Dokument mithilfe von DOM in Java ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage