XML mit dom4j

günterk

Grünschnabel
Hallo zusammen,

ich arbeite micht gerade in xml mit java ein.
Irgendwann bin ich auf dom4j gestoßen und das schien mir sehr brauchbar zu sein, vor allem die Navigation mit Xpath.
Habe mir also die do4j.jar in mein Projekt eingebunden, alles kein problem.
Aber irgendwas fehlt mir wohl noch zu einem Glück.
Wenn ich das ganze jetzt versuche bekomme ich:
java.lang.NoClassDefFoundError: org/jaxen/JaxenException

ich brauche wohl noch die jaxen jar, wenn ich das richtig sehe!? die ist aber nicht zu bekommen, sourceforge spuckt sie mir nicht aus.
kann mir jemand erzählen woher ich die bekomme?

merci

günter
 
Original geschrieben von Thomas Darimont
Hallo!

XPath funktioniert auch mit normalen Standard Java :)
Schau dir mal die Klasse XPathAPI an.

Gruß Tom

Ok, was brauche ich denn nun um mit java, xml und xpath zu arbeiten?
Wie gesagt, ich stolpere über die fehler meldung und weiß nicht recht was sie mir sagen will
günter
 
Original geschrieben von günterk
Ok, was brauche ich denn nun um mit java, xml und xpath zu arbeiten?
Wie gesagt, ich stolpere über die fehler meldung und weiß nicht recht was sie mir sagen will
günter

Die Meldung besagt das er die _Klasse org.jaxe.JaxenException nicht im Classpath finden kann.
java.lang.NoClassDefFoundError: org/jaxen/JaxenException.

Schau nochmals nach ob die richtige Jar wirklich im Classpath ist.

Sprich untersuch die Jar (mit Winzip/WinRAR) und schau ob die Klasse JaxenException in dieser jar wirklich vorhanden ist.
 
Hallo!

Prinzipiell reicht ein Java SDK >= 1.4.0, dort sind nämlich schon ein ganzer Haufen von XML Prozessoren / Parser integriert.

Bei mur unter J2SDK 1.4.2 läst sich XPath so verwenden:
Code:
import org.apache.xpath.XPathAPI;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;

public class XMLTest1 {

	public static void main(String[] args) {
		//J2SDK 1.4.2
		...
		Document doc = ....;
		NodeList list = XPathAPI.selectNodeList(doc,"/abc/def/*");
		...
	}
}

Unter JDK 5.0 ist folgendes möglich:
Code:
import java.io.File;
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.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

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

public class XPathTest {

	public static void main(String[] args) {

		try {
			DocumentBuilderFactory docFactory =
				DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = docFactory.newDocumentBuilder();
			Document doc = builder.parse(new File("./Test.xml"));

			XPathFactory factory = XPathFactory.newInstance();
			XPath xpath = factory.newXPath();

			NodeList nodeList =
				(NodeList) xpath.evaluate(
					"/abc/def/*",
					doc,
					XPathConstants.NODESET);

			int size = nodeList.getLength();
			for (int i = 0; i < size; i++) {
				Node node = nodeList.item(i);
				System.out.println(node.getTextContent());
			}

		} catch (XPathExpressionException e) {
			e.printStackTrace();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
}

Hier die dazu passende XML Datei:
Code:
<?xml version="1.0"?>
<abc>
   <def>
      <ghi>User</ghi>
      <ghi>Helfen</ghi>
      <ghi>Usern</ghi>
   </def>
</abc>

Gruß Tom
 
Zurück