What's wrong with my XPath statement using dom4j?
I'm pretty new to XML. However, I did pick up a book and I'm pretty much through it. I got a copy of dom4j and I created a sample XML file. I'm able to parse the data and find out the child elements of root but I'm having problems with using XPath no matter what I do. Here's my code:
import org.dom4j.*;
import org.dom4j.io.*;
import java.util.*;
import java.io.*;
publicclass XMLACL{
org.dom4j.Document doc;
org.dom4j.Element root;
XMLACL(String x){
String tempFile = System.getProperty("user.dir") +"/winsudo.xml";
tempFile = tempFile.replace('\\', '/');
SAXReader xmlReader =new SAXReader();
try{
doc = xmlReader.read(tempFile);
}
catch (Exception e){}
root = doc.getRootElement();
//treeWalk();
//iterateRootChildren("grant");
XPath xpathSelector = DocumentHelper.createXPath("/grant[@prompt='no']");
List results = xpathSelector.selectNodes(doc);
for (Iterator iter = results.iterator(); iter.hasNext(); ){
Element element = (Element) iter.next();
System.out.println(element.getName());
}
}
}
And here's my XML:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<alias name="admin">
<user>geneanthony</user>
<user>mike</user>
<user>rob</user>
</alias>
<grant prompt="no" runas="root" service="no">
<user>geneanthony</user>
<command>!ALL</command>
</grant>
<grant>
<user>geneanthony</user>
<group>users</group>
<command>C:/Program Files/Mozilla Firefox/firefox.exe</command>
</grant>
<grant>
<alias>admin</alias>
<command>!Panels</command>
</grant>
</config>
I'm currently getting this error:
C:\Borland\JBuilder2005\jdk1.4\bin\javaw -classpath "C:\code\java\WinSudo\classes;C:\Borland\JBuilder2005\jdk1.4\jre\javaws\javaws.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\charsets.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\dnsns.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\ldapsec.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\localedata.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\ext\sunjce_provider.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\im\indicim.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\im\thaiim.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\jce.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\jsse.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\plugin.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\rt.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\sunrsasign.jar;C:\Borland\JBuilder2005\jdk1.4\lib\dt.jar;C:\Borland\JBuilder2005\jdk1.4\lib\htmlconverter.jar;C:\Borland\JBuilder2005\jdk1.4\lib\tools.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\jRegistryKey.jar;C:\Borland\JBuilder2005\jdk1.4\lib\hsqldb.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\dom4j-1.6.1.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\syntax.jar;C:\Borland\JBuilder2005\jdk1.4\jre\lib\IzPack-install-3.7.2.jar" winsudo.Main
java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.DocumentHelper.createXPath(DocumentHelper.java:121)
at winsudo.XMLACL.<init>(XMLACL.java:26)
at winsudo.Main.main(Main.java:15)
Exception in thread "main"
Can someone tell me what's wrong with my code. None of the samples I've seen came with the XML files so I don't know if I when I start the XPATH I need to use / for the root element, or // or a forward slash and the root name. Can I please get some help!

