XML Namespace ignorieren

Xenon

Mitglied
Hallo Forum,

ich sitze seit Tagen an einem Problem, wo ich nicht weiterkomme.
Ich muss eine XML-Datei parsen, in der ein vordefinierter Namensraum existiert.
Beispiel:

Java:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<fa2fp xmlns="http://xxx.com/1099/abc.dat.fa2fp" xmlns:ns2="http://www.w3.org/1025/11/xmldsig#" isEncrypted="false" version="05.02.00">
    <ssExamp created="23aa" date="2011-02-22" kategorie="Kat1" zeit="11:44:38">
    </ssExamp>
</fa2fp>

Wenn ich "xmlns="http://xxx.com/1099/abc.dat.fa2fp" xmlns:ns2="http://www.w3.org/1025/11/xmldsig#" " weglasse, und die Kategorie auslese mit:

Java:
SAXBuilder builder = new SAXBuilder();
Document doc = builder.build(datei); 
Element el= (Element) XPath.selectSingleNode(doc, "//fa2fp/ssExamp");
String s = el.getAttributeValue("kategorie");

gibt es den gewünschten Wert, also "Kat1" zurück, jedoch wenn es beibehalten wird, gibt es "null" zurück. Wahrscheinlich kann er die Schemadatei nicht finden. Ich weiß es auch nicht ganz genau woran das liegt.
Die XML-Datei darf auf jeden Fall nicht geändert werden. Weiß vielleicht jemand von euch, wie man den Namespace, bzw. xmlns UND xmlns:ns2 ignorieren kann?
 

eRaaaa

Top Contributor
Probiere mal
Java:
		XPath xpath = XPath.newInstance("//ns:fa2fp/ns:ssExamp");
		xpath.addNamespace(Namespace.getNamespace("ns","http://xxx.com/1099/abc.dat.fa2fp"));
		Element el= (Element) xpath.selectSingleNode(doc);
 

Ähnliche Java Themen


Oben