XPath: Alle Kinder in einer Schleife auslesen

Cyborg

Aktives Mitglied
Guten Abend,

ich tüftel gerade wie ich mit XPath vernünftig an meine XML Elemente ran komme.

XML:
Code:
<products>

  <product>
    <id>1</id>
    <name>1</name>
    <price>1</price>
  </product>

  <product>
    <id>2</id>
    <name>2</name>
    <price>2</price>
  </product>

  ...

</products>

Mit folgendem Code:

Code:
String expression = "/products/product/name";
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
   System.out.println(nodeList.item(i).getFirstChild().getNodeValue()); 
}

komme ich immer an den Namen.
Ich würde gern in einer Schleife gleichzeitig an id, name und price rankommen.

Also ungefähr so:

Code:
expression = "/products/product";
...
nodeList.item(i).getNode("id").getNodeValue()
nodeList.item(i).getNode("name").getNodeValue()
nodeList.item(i).getNode("price").getNodeValue()

Klappt das irgendwie?

// EDIT:

Habe bei Google noch etwas gefunden

Code:
NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
for (int i = 0; i < nodeList.getLength(); i++) {
   String id = xPath.evaluate("id", nodeList.item(i));
   String name = xPath.evaluate("name", nodeList.item(i));
   String price = xPath.evaluate("price", nodeList.item(i));
}

Allerdings brauch das bei ca 2300 Einträgen knapp 30 Sekunden :O
Ist das richtig, dass das so lange brauch?
 
Zuletzt bearbeitet:

knilch

Bekanntes Mitglied
Hi,
Wie wärs so:
Java:
public void readXmlFile(String xmlFile) {
	try {
		FileInputStream file = new FileInputStream(new File(xmlFile));
        
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
         
        DocumentBuilder builder =  builderFactory.newDocumentBuilder();
         
        Document xmlDocument = builder.parse(file);
		
		XPath xPath =  XPathFactory.newInstance().newXPath();

		String expression = "/products/product";

		NodeList nodeList = (NodeList) xPath.compile(expression).evaluate(xmlDocument, XPathConstants.NODESET);
					
		for (int i = 0; i < nodeList.getLength(); i++) {
			NodeList childList = nodeList.item(i).getChildNodes();
			for (int j = 0; j < childList.getLength(); j++) {
				NodeList childChildList = childList.item(j).getChildNodes();
				for (int k = 0; k < childChildList.getLength(); k++) {
					Node child = childChildList.item(k);
					System.out.println(childList.item(j).getNodeName() + ": " + child.getNodeValue());
				}
			}
		}
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (SAXException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (ParserConfigurationException e) {
        e.printStackTrace();
    } catch (XPathExpressionException e) {
        e.printStackTrace();
    }  
   
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
Kirby.exe Probleme mit XML XPATH Select XML & JSON 3
B XPath soll XML liefern XML & JSON 7
O XPATH Problem - Anfänger XML & JSON 4
M dom4j unberechtigte Invalid XPath expression XML & JSON 12
W XPath schreiben XML & JSON 1
P HTML XPath XML & JSON 1
S Ersatz für die veraltete Klasse XPath XML & JSON 1
P Xpath zugriff auf Attribute XML & JSON 3
P "XPath is deprecated" XML eclipse XML & JSON 3
G HtmlUnit XPath XML & JSON 5
D XPath-Query XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
H ChildNode via XPath ansprechen XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S Attribute von Elementen auslesen mit XPath XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
W XPath + Inhalt aus <td> XML & JSON 2
R XPath - frage zur Adressierung XML & JSON 3
reibi XPath XML & JSON 14
M xPath liefert leeres Nodeset XML & JSON 2
M Probleme mit XPath bei Java XML & JSON 5
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
F XPath-Problem mit DOM4J XML & JSON 8
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
O XPATH gesucht XML & JSON 6
G XPATH-Frage XML & JSON 2
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
P XPath und Namespaces XML & JSON 3
G XPath - replace function funktioniert nicht XML & JSON 3
E XPATH-Ausdruck mit not XML & JSON 4
E Wieso liefert dieser XPATH-Ausdruck nicht die richtige Anzahl Treffer? XML & JSON 8
M XPath Ausdruck validieren XML & JSON 2
N XPath Adressierung XML & JSON 7
F XPath frage XML & JSON 4
B Optionaler XPath pfad XML & JSON 2
B XPath frage XML & JSON 2
T Frage zu XQuery (XQJ) / XPath XML & JSON 2
P XPath Problem XML & JSON 2
S Problem mit XPath XML & JSON 4
T Mit XPATH finden und dann änder XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
G XPath gesucht für Tag mit konkretem Content XML & JSON 2
A XPath Problem XML & JSON 2
C XPath in JDOM klappt nicht XML & JSON 2
T Prbolem XPath XML & JSON 2
loadbrain XPath Problem XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
F hilfe bei xpath-ausdruck XML & JSON 2
K java + xpath -> performanceproblem XML & JSON 9
H Xpath kindelemente auslesen XML & JSON 2
S Xml zurück in xpath wandeln XML & JSON 8
G Frage zu XPath XML & JSON 2
flashfactor Filtern mittels XPATH XML & JSON 4
M XSL/XPath - Nur ersten Wert mit selben Attribut XML & JSON 4
M XPath Problem im Zusammenhang mit document() XML & JSON 2
M Frag zu xsl:when beziehungsweise XPath XML & JSON 3
F JDom und XPath XML & JSON 12
C xpath funktioniert nicht XML & JSON 5
M XPATH und RSS (Problem namespaces) XML & JSON 7
P nochmal XPath :-) XML & JSON 22
P XPath . XML & JSON 2
T Rekursiver Verzeichniss Baum in XML & XPath XML & JSON 4
clemson xpath mit jdom XML & JSON 2
Wildcard xpath Parser XML & JSON 8
B Xml speichern - müssen alle Klassen deklariert werden? XML & JSON 12
S NodeList rückwärts scannen, alle Parent Nodes ausgeben rekursiv und nicht-reukrsiv XML & JSON 0
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
N Alle namespaces ins Root Element hinauf ziehen XML & JSON 2
T xsl schleife alle kindeelemtente eines elternelementes durchlaufen XML & JSON 2
E EMF Modell um alle möglichen Attribute auszulesen XML & JSON 12
T XML prüfen mit XSD => Alle Fehler auflisten XML & JSON 7
M getChildren gibt nicht alle children zurück XML & JSON 3
B JAXB - Unmarshal -> Kinder bekommen und die Kinder von den Kinder XML & JSON 7
K sax kinder zählen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben