JDOM und XPath - Problem mit Namespace ohne Prefix

Status
Nicht offen für weitere Antworten.

Faruun

Aktives Mitglied
Hallo Leute,

ich habe ein Problem, dass ich trotz Suche bisher nicht lösen konnte. Ich hoffe mir kann hier jemand helfen :)

Also:

Ich habe eine vorgegebene xml-Datei, die ich gern nach Elementen durchsuchen möchte.

Auszug aus der xml-Datei (etwas anonymisiert ;) ):
Code:
<?xml version="1.0" encoding="UTF-8"?>
<configuration  xmlns="http://www.tolle-url.de/configuration" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.tolle-url.de/configuration configuration.xsd">
		<formstore xsi:type="filesystem-formstore" id="formstore_admin">
			<root-path>${system:baseDir}/formstores/admin</root-path>
			<unpack>true</unpack>
			<versioning>false</versioning>
		</formstore>
		<formstore xsi:type="filesystem-formstore" id="formstore_unternehmen">
			<root-path>${system:baseDir}/formstores/forms_unternehmen</root-path>
			<unpack>true</unpack>
			<versioning>false</versioning>
		</formstore>
		<formstore xsi:type="filesystem-formstore" id="formstore_verwaltung">
			<root-path>${system:baseDir}/formstores/forms_verwaltung</root-path>
			<unpack>true</unpack>
			<versioning>false</versioning>
		</formstore>
		<formstore xsi:type="filesystem-formstore" id="formstore_buerger">
			<root-path>${system:baseDir}/formstores/forms_buerger</root-path>
			<unpack>true</unpack>
			<versioning>false</versioning>
		</formstore>
	</server>
</configuration>

Um die Datei einzulesen und darin suchen zu können, habe ich JDOM benutzt.

Java-Code:
Code:
import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
import org.jdom.xpath.XPath;


public class ConfigurationParser {
	/**
	 * @param args
	 * @throws IOException 
	 * @throws JDOMException 
	 */
	
	public static void parse(String datei) throws JDOMException, IOException {
		
	    SAXBuilder saxBuilder = new SAXBuilder();
	    Document doc  = saxBuilder.build(new File(datei));
	    Element root = doc.getRootElement();
	    
	    // Ausgaben zur Überprüfung
	    Namespace nameSpace = root.getNamespace();
	    System.out.println("Namespace: " + nameSpace); //Namespace wird korrekt ohne Prefix ausgegeben
	    
	    System.out.println("Datei: " + doc);
	    
	    // Zum Test, ob die xml-Datei komplett gelesen wird.
	    XMLOutputter outputter = new XMLOutputter();
		outputter.output(doc, System.out);
	
	    XPath formstoreSuche = XPath.newInstance("//formstore");
	    formstoreSuche.addNamespace("","http://www.tolle-url.de/configuration"); //Hier scheint das Problem zu sein
	    System.out.println(formstoreSuche.getXPath());
	    
	    List formstores = formstoreSuche.selectNodes(doc); //Hier erwarte ich die gefundenen Formstores
	    
	    System.out.println("Liste \"formstore\": " + formstores); //Liste bleibt leer
	    
	    for (Iterator iter = formstores.iterator(); iter.hasNext();) {
			Element singleFormstore = (Element) iter.next();
			List children = singleFormstore.getChildren();
			List attr = singleFormstore.getAttributes();
			System.out.println("Attributes: " + attr);
			System.out.println("Children: " + children);
			
			
			System.out.println("Formstore: " + singleFormstore);
			
		}
		
	}
	
	public static void main(String[] args) throws JDOMException, IOException {
		// TODO Auto-generated method stub
		
		parse("test.xml");
		
	}

}

Wie man sehen kann, ist dem Namespace kein Prefix mitgegeben worden. Wenn ich händisch in die xml-Datei einen Prefix eingebe und im Java-Code diesen mit addNamespace(String nameSpace,Strng url) übergebe, dann funktioniert es, ebenso, wenn ich den Namespace einfach lösche. Leider kann ich beides nicht machen, da die xml-Datei fest vorgegeben ist.

Ich hoffe die Frage ist nicht zu banal, aber ich komm einfach nicht weiter und auch google und dieses Forum konnte mir nicht weiterhelfen ...

Hat vielleicht jemand einen heißen Tipp für mich?

Gruß,
Faruun
 

clemson

Bekanntes Mitglied
Hallo!

Probier einmal anstatt

Code:
formstoreSuche.addNamespace("", "http://www.tolle-url.de/configuration");

folgendes:

Code:
Namespace configNS = Namespace.getNamespace("http://www.tolle-url.de/configuration");
formstoreSuche.addNamespace(configNS);

mfg
 

Faruun

Aktives Mitglied
Hallo Clemson,

danke für den Tipp. ich kann es leider erst wieder am Dienstag testen, werde mich dann aber melden, ob es geklappt hat :)

Gruß,
Faruun
 

Faruun

Aktives Mitglied
Hallo,

sorry für den späten Test. Leider hat es aber auch nicht funktioniert. Die Liste von Elementen bleibt trotz Änderung leer :(

Hat jemand noch eine Idee?

Gruß,
Faruun
 

clemson

Bekanntes Mitglied
Hallo!

Also ich habe jetzt folgendes probiert und es hat funktioniert.

Soweit ich das verstanden habe, gibt es in XPath keinen default Namespace. Deshalb muß man einen Pseudo-Namespace in der XPath Abfrage definieren. Siehe www.nabble.com/again-xpath-with-default-namespace-t3669331.html

Code:
XPath formstoreSuche = XPath.newInstance("//x:formstore");
Namespace nsConfig = Namespace.getNamespace("x", "http://www.tolle-url.de/configuration");
formstoreSuche.addNamespace(nsConfig);
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
C XPath in JDOM klappt nicht XML & JSON 2
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F JDom und XPath XML & JSON 12
clemson xpath mit jdom XML & JSON 2
P JDOM oder SAX XML & JSON 3
Hijo2006 Grundsätzliches zu JDOM 2.x XML & JSON 1
W Kindelemente mit JDOM eines bestimmten Attributes auslesen XML & JSON 6
S JDOM XML Datei darstellen Fehler! XML & JSON 2
S JDom XML ein Element hinzufügen. XML & JSON 1
C JDOM: Value ohne Unterelemente auslesen XML & JSON 1
Z XML Datei mit JDOM einlesen und verarbeiten XML & JSON 6
J JDOM XMLOutputter getPrettyFormat() XML & JSON 3
H JDOM setAttribute Reihenfolge XML & JSON 3
B XML aus einer URL im Internet lesen (JDOM) XML & JSON 4
F Aus XML mit JDOM aus Elementattributen Werte rauslesen XML & JSON 4
R sax, stax, jdom, jaxb? List von Objekten speichern und laden XML & JSON 6
C xml validierung gegen xsd mit jdom: Fehlermeldung Cannot find the declaration of element ... XML & JSON 8
T Dom, Jdom, Sax XML & JSON 8
Helgon MalformedByteSequenceException und null JDOM Attribute XML & JSON 5
Helgon JDOM schreibt nicht XML & JSON 2
A XSl mit JDom auslesen XML & JSON 1
G xml, jdom "Entität wurde referenziert aber nicht deklariert." XML & JSON 4
A XSL und JDom XML & JSON 3
G jdom-Klassen in Eclipse importieren XML & JSON 2
S JDOM ohne XML Header erzeugen? XML & JSON 2
S JDOM nur Attribut Name XML & JSON 2
X JDom für SOAP Dateien geeignet? XML & JSON 3
M XML Parsen JDOM NullPointerEcxeption XML & JSON 7
S jdom hasChildren()? XML & JSON 1
T Frage zu getContent unter jdom XML & JSON 6
Z Tutorial für JDOM (XSD-Shema) XML & JSON 3
D jdom, xml, login-system XML & JSON 4
N JDOM: XML einlesen XML & JSON 4
O Parsen einer XML mit JDOM ohne Doctype Declaration XML & JSON 2
lordcarlos jdom zu iso-8859-15 zwingen XML & JSON 4
P jdom XML-Encoding auslesen XML & JSON 12
E JDOM - letzem child Attribut hinzufügen XML & JSON 4
H Schema-Validierung mit JDOM XML & JSON 2
lordcarlos JDOM und entfernen von children XML & JSON 4
E JDOM - Problem beim Zusammenfügen zweier Dateien XML & JSON 2
T jdom.jar als Relativer Pfad in Eclipse einbinden XML & JSON 4
sparrow JDom Element.getChild("Name") liefert null obwohl vorhanden XML & JSON 4
S XML, UTF-8, JDOM und Umlaute XML & JSON 3
E XML - JDOM - Bäume: was würdet ihr hier machen? XML & JSON 11
A JDOM: Wert schreiben bzw. ändern XML & JSON 6
T JDOM Bibiliothek XML & JSON 3
K JDOM vs. DOM, Schnittstellen XML & JSON 5
P Große XML Datei mittels JDOM bearbeiten / einlesen XML & JSON 6
0x7F800000 jdom mit xml.transform inkompatibel, was soll ich nehmen? XML & JSON 2
A JDOM und Sonderzeichen < > XML & JSON 17
G Simples XML File einlesen mit JDom. Prefix not bound ? XML & JSON 2
N jdom problem beim lesen von child elementen XML & JSON 5
N problem bei xml lesen mit jdom XML & JSON 2
S Ampersand im Jdom-Element XML & JSON 2
N jdom - xslt-Verweis in .xml einfügen XML & JSON 3
S Jdom+java webstart XML & JSON 4
K html -> cyberneko -> xml -> jdom . XML & JSON 3
I JDom Text ändern XML & JSON 4
C jdom.Element nicht vorhanden? XML & JSON 4
W JDOM element ändern funzt nich :( [problem gelöst] XML & JSON 3
S Harte Nuss mit XML und JDOM XML & JSON 2
H mit JDOM Verarbeitungsanweisungen und Kommentare auslesen XML & JSON 2
B jdom: getChildren() problem XML & JSON 4
T Bild in XML per JDOM XML & JSON 4
D JDOM erzeugt leere xmlns Attribute XML & JSON 4
T Elemente zählen mit JDOM in XML XML & JSON 7
B jdom document aus string erzeugen? XML & JSON 1
T XML mit JDOM auslesen => langsam? XML & JSON 7
B jdom outputter ohne attribute XML & JSON 2
C XML encoding UTF-8 und JDOM XML & JSON 4
P Probleme mit JDom . addContent(int index,Collection c) XML & JSON 2
R key aus xml lesen mittels jdom XML & JSON 5
M JDOM Element ohne Inhalt kopieren ? XML & JSON 3
X JDOM SAXBuilder Validationschema - Problem XML & JSON 8
G einzelne tags mit jdom auslesen XML & JSON 4
F XML ( ca. 280 MB) JDom & SAXBuilder lesen = OutOfMemoryE XML & JSON 4
K JDOM SAXBuilder einlesen XML & JSON 6
S Ausgabe "asXML" mit Jdom XML & JSON 2
B Element an bestimmter Stelle einfügen (JDOM) XML & JSON 8
G XML mit JDOM ausgeben [Klappe die 1Mio.ste] XML & JSON 2
F XML mit JDOM auslesen XML & JSON 2
D JDOM auf den PC machen XML & JSON 6
J JDOM Unicode XML & JSON 2
J schema-Validierung mit xerces und jdom: bug in java 1.4? XML & JSON 9
P JDOM Werte verändern XML & JSON 4
S OutOfMemory mit JDOM XML & JSON 6
S org.jdom.document in String umwandeln. XML & JSON 2
M ISO-8859-1 >> UTF-8 + JDOM + Verwirrung. XML & JSON 2
J [Newbie] [JDOM] Element aus XML entfernen klappt nicht XML & JSON 4
J JDOM mit XML-Schema XML & JSON 8
P HTML-Sting in JDOM XML & JSON 7
B JDOM && ObjectOutputStream XML & JSON 8
B Versionskonflikt bei JDOM XML & JSON 9
B JDom -- getChild() liefert nicht nachvollziehbar null XML & JSON 2
M JDOM parse Exception XML & JSON 3
G JDom encoding ändern XML & JSON 2
R JDOM Root-Element entfernen aber Rest behalten XML & JSON 10

Ähnliche Java Themen

Neue Themen


Oben