xPath liefert leeres Nodeset

MI-Stud

Neues Mitglied
Hallo an Alle,

nachdem ich nun "Prof. Google" genervt und X-Foren durchwühlt habe muss ich euch doch mit meinem Problem belästigen. Ich denke mal das vielen diese Frage direkt bekannt vorkommen wird, jedoch waren sämmtliche Internethilfen, die ich bisher gefunden habe für mein Problem nicht der Stein der weisen.

Ich habe folgenden JavaCode von IBM "geklaut" und lediglich den XPath-Ausdruck und den Dateipfad angepasst.
Java:
			/*
			 * IBM CODE
			 */
		    DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
		    domFactory.setNamespaceAware(true); // never forget this!
		    DocumentBuilder builder = domFactory.newDocumentBuilder();
		    Document doc = builder.parse("c:/test/meineXML.xml");
		    
		    XPathFactory factory = XPathFactory.newInstance();
		    XPath xpath = factory.newXPath();
		    try
		    {
		    	XPathExpression expr = xpath.compile("//ItemRef");
		    	Object result = expr.evaluate(doc, XPathConstants.NODESET);
			    NodeList nodes = (NodeList) result;
		        System.out.println(nodes.getLength());
		    }
		    catch(XPathException e)
		    {
		    	System.out.println(e.getMessage());
		    }

In meiner XML-Datei kommen definitiv!!!! mehrere ItemRef Elemente vor. Der Ausdruck "//*" selektiert mir auch wirklich ALLE Knoten in XML. Nur sobald ich das ganze einschränken möchte, bekomme ich IMMER eine leere Nodelist zurück.

Auszug aus der XML-Datei:
[XML]
<?xml version="1.0" encoding="UTF-8"?>
<ODM FileOID="ODM.1278323463921" Description=“BLA" FileType="Snapshot" Granularity="All" CreationDateTime="2010-08-02T11:33:39+02:00" ODMVersion="1.3" Originator="Formedix" SourceSystem="Origin Study Modeller" SourceSystemVersion="2.7.0" xmlns="http://www.cdisc.org/ns/odm/v1.3" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cdisc.org/ns/odm/v1.3
http://www.cdisc.org/models/odm/v1.3/ODM1-3-0Rev.xsd">
<Study OID="S.0123">
<GlobalVariables>
<StudyName>Testfile</StudyName>
<StudyDescription>Testfile zum testen</StudyDescription>
<ProtocolName>Protokoll Testfile</ProtocolName>
</GlobalVariables>
......
<ItemGroupDef OID="IG.0001" Name="Arterielle Hypertonie" Repeating="No">
<Description>
<TranslatedText xml:lang="en">Arterial hypertension</TranslatedText>
</Description>
<ItemRef ItemOID="I.0032" Mandatory="Yes" OrderNumber="1"/>
<ItemRef ItemOID="I.0002" Mandatory="Yes" OrderNumber="2"/>
<ItemRef ItemOID="I.0003" Mandatory="Yes" OrderNumber="3"/>
</ItemGroupDef>
<ItemGroupDef OID="IG.0002" Name="Regelmäßig Sport" Repeating="No">
<ItemRef ItemOID="I.0005" Mandatory="Yes" OrderNumber="1"/>
<ItemRef ItemOID="I.0006" Mandatory="Yes" OrderNumber="2"/>
<ItemRef ItemOID="I.0008" Mandatory="Yes" OrderNumber="3"/>
</ItemGroupDef>
.......

[/XML]
Ich hoffe ihr könnt mir helfen. Bin seit mehr als einer Woche an diesem Problem dran.

Grüße

MI-Stud

PS: Ist mein erster Eintrag hier im Forum, daher sorry wenn etwas mit der Formatierung nicht ganz hinhauen sollte
 

eRaaaa

Top Contributor
Das würde so funktionieren, wenn du kein Namespace definieren würdest.
Soll heißen, du kannst mal probieren aus
[xml]
<ODM FileOID="ODM.1278323463921" Description=“BLA" FileType="Snapshot" Granularity="All" CreationDateTime="2010-08-02T11:33:39+02:00" ODMVersion="1.3" Originator="Formedix" SourceSystem="Origin Study Modeller" SourceSystemVersion="2.7.0" xmlns="http://www.cdisc.org/ns/odm/v1.3" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.cdisc.org/ns/odm/v1.3
http://www.cdisc.org/models/odm/v1.3/ODM1-3-0Rev.xsd">
[/xml]
nur
[xml]
<ODM FileOID="ODM.1278323463921" Description=“BLA" FileType="Snapshot" Granularity="All" CreationDateTime="2010-08-02T11:33:39+02:00" ODMVersion="1.3" Originator="Formedix" SourceSystem="Origin Study Modeller" SourceSystemVersion="2.7.0">
[/xml]

zu machen...dann sollte es gehen.

In deinem Fall(also ohne die XML-Datei jetzt bezüglich des Namespaces abzuändern) könntest du folgendes machen:

- eine neue Klasse
Java:
class ODMNamespaceContext implements NamespaceContext {

	public String getNamespaceURI(String prefix) {
		if (prefix == null)
			throw new NullPointerException("Null prefix");
		else if ("ns".equals(prefix))
			return "http://www.cdisc.org/ns/odm/v1.3";
		return XMLConstants.NULL_NS_URI;
	}

	// This method isn't necessary for XPath processing.
	public String getPrefix(String uri) {
		throw new UnsupportedOperationException();
	}

	// This method isn't necessary for XPath processing either.
	public Iterator getPrefixes(String uri) {
		throw new UnsupportedOperationException();
	}
}

und dann
Java:
		XPathFactory factory = XPathFactory.newInstance();
		XPath xpath = factory.newXPath();
		xpath.setNamespaceContext(new ODMNamespaceContext());  // <---
		XPathExpression expr = xpath.compile("//ns:ItemRef");  // <----
		Object result = expr.evaluate(doc, XPathConstants.NODESET);
		NodeList nodes = (NodeList) result;
		System.out.println(nodes.getLength());
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Wieso liefert dieser XPATH-Ausdruck nicht die richtige Anzahl Treffer? XML & JSON 8
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
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
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 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
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
X Xpath, alle Element die mit "user" beginnen auswäh 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
H getChildNodes() liefert mehr als erwartet XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
G getAtributeValue liefert String mit störenden Steuerzeichen XML & JSON 2
A Leeres Array beim Auslesen von XML-Datei XML & JSON 4

Ähnliche Java Themen

Neue Themen


Oben