# JDOM und XPath, zu  Element zugehörigen XPath-Ausdruck



## McTrevor (30. Mai 2007)

Hallo,

ich habe folgendes Problem. Ich navigiere durch ein JDom-Dokument mit den getChildren-Funktionen. Nun bin ich an einem Element innerhalb des Dokuments angekommen und benötige den zugehörigen XPath-Ausdruck für dieses Element. Gibt es eine Möglichkeit diesen einfach zu erhalten ohne den aktuellen Pfad und die Attribute auszuwerten? Also am besten etwas fertiges?

Bis dann denn!

McTrevor


----------



## HoaX (30. Mai 2007)

imho ehr nicht, denn woran orientiert sich denn xpath? an pfaden und attributen ...


----------



## McTrevor (31. Mai 2007)

Mir würde es auch reichen, das aktuelle Element in sein X-Path-Pendant (X-Path-Node) umzuwandeln. Ist dies auch nicht möglich?

Bis dann denn!

McTrevor


----------



## McTrevor (31. Mai 2007)

Nun habe ich zusätzlich noch ein anderes Problem... Ich benutze JDOM und möchte mir aus einer Datei ein JDOM-Dokument erstellen lassen. Ich übergebe als den Dateinamen (mit absolutem Pfad) an einen SAXBuilder:


```
doc = new SAXBuilder().build( fileName );
```

An dieser Stelle wird aber folgende Exception geworfen:

java.net.MalformedURLException: unknown protocol: d
	at java.net.URL.<init>(URL.java:574)
	at java.net.URL.<init>(URL.java:464)
	at java.net.URL.<init>(URL.java:413)
	at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:650)
	at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:186)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
	at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
	at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
	at org.jdom.input.SAXBuilder.build(SAXBuilder.java:891)
	at de.zivit.datatransformation.AbstractTransformer.init(AbstractTransformer.java:47)
	at de.zivit.datatransformation.TransformerThread.run(TransformerThread.java:82)

Der Pfad stimmt soweit. Wenn ich ihn mir ausgeben lasse und im Explorer eingebe, öffnet sich das gewünschte XML-Dokument.

JDOM und Jaxen sind eingebunden.

Bis dann denn!

McTrevor

p.s.: Bei der angegebenen Datei handelt es sich um eine lokal auf der Festplatte eines Win-XP Rechners liegende Datei. Der absolute Pfad hat also die Form: "D:\blubb\bla\datei.xml"


----------



## Faruun (31. Mai 2007)

Hallo,

problier mal:


```
SAXBuilder saxBuilder = new SAXBuilder();
Document doc  = saxBuilder.build(new File(datei));
```

Bei der Angabe der Datei noch die "\" durch "/" ersetzen ( also anstatt "c:\ordner\datei.xml" "c:/ordner/datei.xml")

Gruß,
Faruun


----------



## McTrevor (31. Mai 2007)

Das hat schonmal geholfen! Danke. Die file-Seperator musste ich dafür aber nicht ersetzen.

Bis dann denn!

McTrevor


----------

