DomParser - Element filtern

Benutzer267

Mitglied
Hey,
und zwar habe ich folgende XML (gekürzte Form):
XML:
<keys>
    <key type="privat">
        <id>01</id>
        <description>TestDescr</description>
    </key>
    <key type="geschäftlich">
        <id>01</id>
        <description>TestDescr</description>
    </key>
</keys>
Meine Frage ist nun, wie ich die Elemente, mit Hilfe des Dom-Parsers, so filtern kann, dass ich nur die id und description des keys mit beispielsweise dem type "privat" ausgeben kann.

Kann mir jemand weiterhelfen?
 

mihe7

Top Contributor
Sollte in etwa so funktionieren:
Java:
XPath path = XPathFactory.newInstance().newXPath();
NodeList nodes = (NodeList) path.evaluate("/keys/key[@type='privat']", doc, XPathConstants.NODESET);
 

Benutzer267

Mitglied
Wo soll ich das Ganze ergänzen?

Hier nochmal die XML und der vollständige bisherige Code:

XML:
<keys>
    <key type="kosten">
        <id>01</id>
        <description>TestDescr</description>
    </key>
    <key type="ort">
        <id>01</id>
        <description>TestDescr</description>
    </key>
</keys>

Java:
public class Key {
    private String id;
    private String description;

    public Key(String pId, String pDescription) {
        setId(pId);
        setDescription(pDescription);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }
}

Java:
public class Parse() {
    private static String pfad = "pfadZurDatei";

    private static ArrayList<Key> kostenListe;
    private static ArrayList<Key> ortListe;

    public static void main(String[] args) {
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
  
        Document document = builder.parse(new File(pfad));
  
        getKostenListe();
    }

    public static ArrayList<Key> getKostenListe(Document document) {
        NodeList id = document.getElementsByTagName("id");
        NodeList description = document.getElementsByTagName("description");
  
        kostenListe = new ArrayList<Key>(id.getLength);
        for (int i = 0; i < id.getLength(); i++) {
            String ID = id.item(0).getTextContent();
            String DESCRIPTION = description.item(0).getTextContent();
      
            Key key = new Key(ID, DESCRIPTION);
            kostenListe.add(key);

           /*Wenn ich jetzt hier die Id und Description aus der Key Klasse hole bzw. ausgebe,
             erhalte ich logischerweise die Werte der ganzen XML. Wie ist es hier möglich nur die Werte
             des keys mit dem "kosten" typ auszugeben?*/
             System.out.println(key.getId());
             System.out.println(key.getDescription());
        }
        return kostenListe;
    }

    /**
     * Erstmal irrelevant.
     */
    public static ArrayList<Key> getOrtListe(Document document) {
        NodeList id = document.getElementsByTagName("id");
        NodeList description = document.getElementsByTagName("description");
  
        ortListe = new ArrayList<Key>(id.getLength);
        for (int i = 0; i < id.getLength(); i++) {
            String ID = id.item(0).getTextContent();
            String DESCRIPTION = description.item(0).getTextContent();
      
            Key key = new Key(ID, DESCRIPTION);
            ortListe.add(key);
        }
        return ortListe;
    }
}
 
Zuletzt bearbeitet:

mihe7

Top Contributor
Java:
    public static ArrayList<Key> getKostenListe(Document doc) {
        XPath path = XPathFactory.newInstance().newXPath();
        NodeList keys = (NodeList) path.evaluate("/keys/key[@type='privat']", doc, XPathConstants.NODESET);
        kostenListe = new ArrayList<Key>(keys.getLength());
        for (int i = 0; i < keys.getLength(); i++) {
             Element elem = (Element) keys.item(i);
             kostenListe.add(getKey(elem));
        }
    }

    private static Key getKey(Element elem) {
        NodeList id = elem.getElementsByTagName("id");
        NodeList description = elem.getElementsByTagName("description");

        return new Key(id.item(0).getTextContent(), description.item(0).getTextContent());
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Queue.remove() -> no such element exception Allgemeine Java-Themen 17
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
B flying-saucer-pdf Element vertikal strecken Allgemeine Java-Themen 0
P Selenium . Probleme ein Iron Icon Element anzusprechen Allgemeine Java-Themen 2
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
D Firebase retrieve data Problem, Child Element wird nicht angesprochen Allgemeine Java-Themen 0
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
I DOM-Parser - Element im Element an bestimmten Stellen auslesen Allgemeine Java-Themen 1
S Iterable<?> anzahl der Element Allgemeine Java-Themen 14
P Element einer Liste wurde hinzugefügt, aber es gibt keinen Zugriff Allgemeine Java-Themen 2
C Swing File[] als klickbare links in irgendeinem Swing Element Allgemeine Java-Themen 3
perlenfischer1984 Reflection : Element in generische Liste hinzufügen Allgemeine Java-Themen 4
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2
B Prüfen, ob ein Element in der Liste nicht existiert Allgemeine Java-Themen 3
Messoras List zeigt nur das letzte Element an Allgemeine Java-Themen 14
O aus Liste ein beliebiges Element auswählen Allgemeine Java-Themen 7
0 mittleres Element aus TreeMap Allgemeine Java-Themen 5
J XML Element Zugriff Allgemeine Java-Themen 4
S translate verschiebt verkehrtes Element Allgemeine Java-Themen 2
M Webservices: WSDL Files ohne "Service" Element? Allgemeine Java-Themen 4
P Element toString Allgemeine Java-Themen 9
J Element aus HashSet löschen Allgemeine Java-Themen 2
S Element aus ArrayListe löschen --> Thread hängt sich auf Allgemeine Java-Themen 2
E Blob Element kopieren Allgemeine Java-Themen 12
G Element aus Liste entfernen Allgemeine Java-Themen 6
B von Array-Element auf Position in Array Allgemeine Java-Themen 7
M Javadoc | Javadoc Eintrag des verlinkten Element einbetten? Allgemeine Java-Themen 4
A Element für Preferences Page Allgemeine Java-Themen 3
T Element aus Vector entfernen Allgemeine Java-Themen 4
J Tree indexieren, Element-Indexierung Allgemeine Java-Themen 2
A Queue, beim dem das letzte Element herausfällt Allgemeine Java-Themen 4
I ArrayList mit einem aktiven Element Allgemeine Java-Themen 7
M Wie heißt denn dieses grafische Element ? Allgemeine Java-Themen 2
K Kein schließendes Tag bei leerem Element mit JDOM Allgemeine Java-Themen 8
E JTree - einzelnes Element (Knoten) editieren Allgemeine Java-Themen 2
B JList Element Auswahl Allgemeine Java-Themen 2
N Array Element vom Typ eines Objekts zeigt auf ein anderes A. Allgemeine Java-Themen 4
Ark Kubische Suche um ein Element in array[][][] Allgemeine Java-Themen 18
D Fehler beim löschen eines Arraylist-element Allgemeine Java-Themen 5
M Erstes Element einer Enumeration ermitteln Allgemeine Java-Themen 6
N Element aus LinkedList löschen Allgemeine Java-Themen 2
C Collection Element ersetzen Allgemeine Java-Themen 5
MiMa Filtern von TableView Liste Allgemeine Java-Themen 2
L Text filtern Allgemeine Java-Themen 1
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
ralfb1105 Blöcke aus Datei filtern/suchen und in neue Datei schreiben Allgemeine Java-Themen 10
N Streams wann .filtern? Allgemeine Java-Themen 2
N Java stream filtern. Allgemeine Java-Themen 19
J Jsoup Filtern Allgemeine Java-Themen 5
OlafHD Java Sätze filtern Allgemeine Java-Themen 1
N JTable filtern Allgemeine Java-Themen 3
H Speziellen Wert aus String filtern Allgemeine Java-Themen 4
F Medien filtern Allgemeine Java-Themen 4
J String filtern / XML-Code extrahieren Allgemeine Java-Themen 4
X Java String Regex - Sonderzeichen Filtern Allgemeine Java-Themen 5
J Zeichenketten-Liste filtern Allgemeine Java-Themen 6
S Eine Collection von Objekten mit LDAP Syntax filtern Allgemeine Java-Themen 5
D große Textdatei filtern Allgemeine Java-Themen 13
S Koordinaten aus einem Text filtern Allgemeine Java-Themen 11
M Nach bestimmter Namenskonvention filtern Allgemeine Java-Themen 2
J ArrayList Objekte anhand Propertywerte filtern Allgemeine Java-Themen 3
M Dateiinhalt filtern Allgemeine Java-Themen 9
S eine ip-adresse aus einem String filtern Allgemeine Java-Themen 5
N Array mit null Werten filtern Allgemeine Java-Themen 5
S 20.000 File filtern Allgemeine Java-Themen 11
G mit Pattern strings filtern ein kleines problemchen ;) Allgemeine Java-Themen 2
W Dateien filtern Allgemeine Java-Themen 7
märliprinz Sortieren und Filtern von Funktionen/Methoden Allgemeine Java-Themen 4
L In JTable Zeilen n. selben Dateninhalt filtern & ausgebe Allgemeine Java-Themen 16

Ähnliche Java Themen


Oben