Attributwert aus XML auslesen

Status
Nicht offen für weitere Antworten.

Cori

Mitglied
Hallo Zusammen ich hab ein XML, aus dem ich eine einzige ID benötige:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<lab:LabReport>
<lab:report>
<lab:ident>
<lab:referrer_order order_number="1" order_date="2006-03-23T00:00:00" patient_id="1.1" case_id="2"/>
</lab:ident>
</lab:report>
</lab:LabReport>

nun benötige ich die patientenid als long, wie lese ich das am besten aus? Ist XPath da eine lösung?

grüsse cori
 

Cori

Mitglied
Ich habs jetzt mal mit XPath probiert, hab auch die richtige expression zusammen, im java erhalte ich allerdings immer null zurück.

expression: /lab:LabReport/lab:report/lab:ident/lab:referrer_order/@patient_id
 

Cori

Mitglied
Wen ich die expression im altova xmlspy ausführe funktioniert es ja auch, daher weiss ich das di expression richtig ist.

Darum hab ich ja geschrieben das ich im Java null erhalte, wen es bei dir geht, dann hab ich irgendwas wohl bei der verwendung des xpath falsch gemacht, nur leider hab ich da keine ahnung, das es so viele verschiedene infos gibt im netz...
 

Atze

Top Contributor
Java:
package org.javaforum;

import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class PathTest {
	
	public static void main (String[] args){
		
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		factory.setNamespaceAware(true); // never forget this!
		DocumentBuilder builder;
		try {
			builder = factory.newDocumentBuilder();
			Document doc = builder.parse("D:\\workspaceFX\\Test\\src\\org\\javaforum\\test.xml");
			
			XPathFactory factoryX = XPathFactory.newInstance();
			XPath xpath = factoryX.newXPath();
			XPathExpression expr = xpath.compile("/LabReport/report/ident/referrer_order/@patient_id ");
			Object result = expr.evaluate(doc, XPathConstants.NODESET);
			NodeList nodes = (NodeList) result;
			for (int i = 0; i < nodes.getLength(); i++) {
			    System.out.println(nodes.item(i).getNodeValue()); 
			}
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SAXException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (XPathExpressionException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}

so trifft er bei mir und gibt "1.1" aus. hab aus deinem beispiel nur die namespaces rausgenommen, damits übersichtlicher wird :) der rest deiner expression stimmt.
 

Cori

Mitglied
vielen Dank für die Antwort, bei mir jedoch beinhaltet die Nodelist leider keine Elemente...
 

Cori

Mitglied
So nach längerem versuchen geb ichs auf, keine ahnung wieso das es bei mir nie elemente zurückgibt obwohl ich den code von hier kopirt habe...
 

SebiB90

Top Contributor
also ich habs mal getestet, bei mir funktionierts aber nur, wenn namespaceaware false mache.
Zeig nochmal deinen kompletten code und wie genau die xml aufgebaut ist. Denn ein prefix ohne namespace macht irgenwie wenig sinn.
 

Cori

Mitglied
danke vielmals an das hab ich ehrlich nicht gedacht jetzt funktioniert es...
manchmal kann man wirklich blind sein...:lol:
 

Sergey

Neues Mitglied
Hallo, ich habe an dieser Stelle auch ein Problem mit XPath. Ich dachte, dass es an meiner Implementierung lag, aber mit dem Code von "Atze" tritt das Problem bei mir ebenfalls auf.

Also ich bekomme eine XML vom Server generiert. Und muss die Ausgabe validieren. Die XML kann folgendes enthalten:
[XML]<itdOdv type="stop" usage="origin">
<itdOdvPlace state="list" method="itp">
<itdMessage type="error" module="BROKER" code="2">place list</itdMessage>
<odvPlaceElem listIndex="0" selected="0" omc="3241010" placeID="2" value="0:3241010:2" span="9" type="local" matchQuality="993011" mainPlace="0">Brink (Langenhagen)</odvPlaceElem>
<odvPlaceElem listIndex="1" selected="0" omc="13057059" placeID="2" value="1:13057059:2" span="0" type="remote" matchQuality="998007" mainPlace="0">Hankenhagen</odvPlaceElem>
<odvPlaceElem listIndex="2" selected="0" omc="8435030" placeID="2" value="2:8435030:2" span="0" type="remote" matchQuality="998006" mainPlace="1">Langenargen</odvPlaceElem>
<odvPlaceElem listIndex="3" selected="0" omc="3152007" placeID="10" value="3:3152007:10" span="9" type="local" matchQuality="993011" mainPlace="0">Langenhagen (Duder.)</odvPlaceElem>
<odvPlaceElem listIndex="4" selected="0" omc="3357016" placeID="12" value="4:3357016:12" span="9" type="local" matchQuality="991011" mainPlace="0">Langenhagen/Gnarrenb</odvPlaceElem>
<odvPlaceElem listIndex="5" selected="0" omc="3241010" placeID="14" value="5:3241010:14" span="9" type="local" matchQuality="995011" mainPlace="1">Langenhagen (Han)</odvPlaceElem>
<odvPlaceElem listIndex="6" selected="0" omc="7143254" placeID="2" value="6:7143254:2" span="0" type="remote" matchQuality="998008" mainPlace="1">Langenhahn</odvPlaceElem>
<odvPlaceElem listIndex="7" selected="0" omc="3357016" placeID="13" value="7:3357016:13" span="9" type="local" matchQuality="998008" mainPlace="0">Langenhausen</odvPlaceElem>
<odvPlaceElem listIndex="8" selected="0" omc="3257019" placeID="2" value="8:3257019:2" span="9" type="local" matchQuality="998007" mainPlace="1">Lauenhagen</odvPlaceElem>
<odvPlaceElem listIndex="9" selected="0" omc="3241010" placeID="15" value="9:3241010:15" span="9" type="local" matchQuality="993011" mainPlace="0">Maspe (Langenhagen)</odvPlaceElem>
<odvPlaceInput>langenhagen</odvPlaceInput>
</itdOdvPlace>
<itdOdvName state="notidentified" method="auto">
<odvNameElem>hbf</odvNameElem>
<odvNameInput>hbf</odvNameInput>
</itdOdvName>
</itdOdv>[/XML]

Wenn ich jetzt folgende XPath Abfrage schicke:
Code:
//itdOdv[@usage='origin']/itdOdvPlace/odvPlaceElem/attribute::type
bekomme ich wunderbar die Attribute nach einander aufgelistet.
Ich kann aber jedoch irgendwie nicht die Namen (der Haltestellen) selbst rauslesen. Also ich probiere es mit
Code:
//itdOdv[@usage='origin']/itdOdvPlace/odvPlaceElem
Bekomme aber lauter "null"en Zurück. Wenn ich die oben stehende Anweisung mit einem Firefox XPath plugin teste (XPather 1.4.5) so liefert er mir die von mir erwartete Treffer zurück.
Ich weiß um ehrlich zu sein nicht weiter, kann mir wer einen Tipp geben?

P.S. ich hoffe, dass es richtig war, meine Frage hier zu posten und keinen neuen Thread zu öffnen...


Edit:
ich bin ja so doof. Hier die Lösung:
statt
Code:
System.out.println(nodes.item(i).getNodeValue());
muss ich nur
Code:
System.out.println(nodes.item(i).getTextContent());
benutzen
 
Zuletzt bearbeitet:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L JSON auslesen und Labels in GUI verwenden XML & JSON 13
M json page 2 auslesen XML & JSON 1
J Auslesen der Länge einer XML-Datei in Android Studio XML & JSON 8
Kanda Sorata Eingabefelder von Excel Dateien auslesen XML & JSON 1
K XML vernünftig auslesen XML & JSON 9
K XML Datei erstellen und Daten daraus in Java auslesen XML & JSON 6
H SOAPBody auslesen XML & JSON 0
B XML auslesen, benötige Hilfe XML & JSON 13
I Liste in YAML Datei speichern und wieder auslesen XML & JSON 1
W XML einlesen und Attribute auslesen XML & JSON 1
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4
M Json auslesen XML & JSON 7
K XML Auslesen, wie abspeichern? XML & JSON 32
D Attribute aus XML Auslesen XML & JSON 5
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
R Apache POI: Gezieltes Auslesen von Zellen XML & JSON 2
S XMl auslesen:@ output ? XML & JSON 1
Z Verschachtelte XML auslesen XML & JSON 3
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
I XML IDs auslesen, erst X dann Y XML & JSON 2
S XML - rekursives auslesen - Zeilenumbruch als NodeValue? XML & JSON 3
O XML richtig auslesen XML & JSON 7
Kenan89 XML Tag-ID auslesen mit getElementById XML & JSON 2
J Excel zeilenweise auslesen - POI XML & JSON 5
J Excel Zellen auslesen - automatischer Stopp bei leerer Zelle XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
S SVG auslesen und darstellen XML & JSON 5
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
1 Html tabelle auslesen??? XML & JSON 6
JanUlrich Tabelle auslesen XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
J Anzahl der Elemente in einem XML-Dokument auslesen XML & JSON 7
K XMl auslesen XML & JSON 19
P Poi /XSSF : Excel-Tabelle auslesen XML & JSON 2
S XSD-Datei zulässige Werte auslesen XML & JSON 3
D rss auslesen XML & JSON 2
S Attribute von Elementen auslesen mit XPath XML & JSON 2
M Große Datei auslesen/in dieser suchen XML & JSON 2
M RSS-Datei auslesen von Yahoo Webservice XML & JSON 4
N Google Wetter XML (nur current_condition) auslesen mit Java XML & JSON 15
J Dateinamen beim Start auslesen XML & JSON 8
eQuest XML Jaxen Attribute auslesen XML & JSON 2
E XML Datei mit DOM auslesen (Text mit Attributen) XML & JSON 2
P jdom XML-Encoding auslesen XML & JSON 12
H XML Attribute auslesen XML & JSON 5
Nicer Bestimmten Wert aus einer XML Auslesen XML & JSON 34
L XML Daten auslesen und in Tabelle (Array) speichern XML & JSON 1
L XML Dokument auslesen funktioniert nicht richtig XML & JSON 2
H XML String auslesen XML & JSON 4
E XML Knoten mit rekursiver Methode auslesen XML & JSON 3
S Dom Baum auslesen XML & JSON 12
J Properties auslesen (Jar) XML & JSON 1
S auslesen XML & JSON 9
Z XML auslesen, Elemente daraus entfernen und als neue XML zurückgeben XML & JSON 2
M XMI-Datei auslesen XML & JSON 4
T EXSD auslesen mit XPath und JDOM XML & JSON 8
M XML-Datum als Referenz auf Objekt-Variable auslesen XML & JSON 5
Spot84 xmi auslesen XML & JSON 20
G Welche Klassen zum erzeugen/auslesen eines XML Files verwend XML & JSON 9
G Xml File schematisch auslesen XML & JSON 2
P NullPointerException beim Auslesen XML & JSON 8
N XML-String in MIDP auslesen XML & JSON 3
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
K XML auslesen (simpel) XML & JSON 10
X XML File auslesen/parsen u. in ne Hashmap speichern XML & JSON 2
HeRaider Definitionen auslesen und Encoding XML & JSON 3
A SVG Datei auslesen und Batik XML & JSON 1
M XML werte auslesen ! XML & JSON 3
M XML File während Applet-Start auslesen? XML & JSON 10
L SAXReader , auslesen bis zum bestimmten knoten! XML & JSON 3
W XML DomDocument als String auslesen XML & JSON 2
T XML mit JDOM auslesen => langsam? XML & JSON 7
N XML Datei auslesen / Validierung XML & JSON 4
G einzelne tags mit jdom auslesen XML & JSON 4
F XML mit JDOM auslesen XML & JSON 2
N bestimmtes Element auslesen - ich verzweifel XML & JSON 3
A XML-File auslesen, alles leer? XML & JSON 2
H Elemente eines Node auslesen XML & JSON 2
H Xpath kindelemente auslesen XML & JSON 2
P [Solved] XSL: Element-Variable auslesen XML & JSON 2
A Internetinhalte auslesen und in einem XML-File speichern XML & JSON 4
A Auslesen einer XML Datei XML & JSON 58
P Knoten-Attribute einer xsd-Datei in einem JTree auslesen XML & JSON 18
M Aus DTD's Klassen auslesen XML & JSON 2
M *.group() in File auslesen XML & JSON 4
T Einfach nur die Elemente einer XML Datei auslesen :( XML & JSON 10
R Problem beim Auslesen von Attributen XML & JSON 4
G Aus XML-Datei auslesen und als Java-Dialog ausgeben XML & JSON 3
D Eingehende XML Files Auslesen XML & JSON 3
T Prob: Auslesen XML File mit JDOM XML & JSON 2
W XML-Document auslesen XML & JSON 2
T Mehrere gleichnamige Unterelemente auslesen XML & JSON 2

Ähnliche Java Themen

Neue Themen


Oben