我在unit中调用这个函数的时候,总体是这一行出错,List list = document.selectNodes("//root/node");。那位高人知道这是什么原因?public void TestGetByPath() {
String strXml = "<root><node><test name=\"Jone\">The First Body</test>";
strXml += "<test name=\"Rose\">The secend</test></node><node><test name=\"qwe\">three</test>";
strXml += "<test name=\"1123\">four</test></node></root>";
Document document = null;
try {
document = XmlEngine.LoadString(strXml);
List list = document.selectNodes("//root/node");
for(int i = 0; i < list.size(); i++)
{
Element element = (Element) list.get(i);
this.ShowElement(element);
} } catch (DocumentException de) {
System.out.println(de.getMessage());
}
}

解决方案 »

  1.   

    xpath我使用Jdom的dom4j 不太清楚,估计你的xml字符串没有指明这个<?xml version="1.0" encoding="UTF-8"?>吧?
      

  2.   


    Element root=document.getRootElement();
    List list = root.selectNodes("//root/node");
    改成这样试试
      

  3.   

    这个当然得看dom4j自带的文档了,呵呵,我今天刚下载了这个用,暂时只会解析简单的xml文档,xpath没用到。
      

  4.   

    List list = root.selectNodes("//root/node");
    我已经试过了,也是不行的
    错误信息:java.lang.NoClassDefFoundError: org/jaxen/JaxenException
    at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
    at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
    at org.dom4j.tree.AbstractNode.selectNodes(AbstractNode.java:164)
    at com.devie.xml.XmlDocument.TestGetByPath(XmlDocument.java:39)
    at com.devie.xml.XmlDocumentTest.testTestDom4j(XmlDocumentTest.java:14)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at junit.framework.TestCase.runTest(TestCase.java:154)
    at junit.framework.TestCase.runBare(TestCase.java:127)
    at junit.framework.TestResult$1.protect(TestResult.java:106)
    at junit.framework.TestResult.runProtected(TestResult.java:124)
    at junit.framework.TestResult.run(TestResult.java:109)
    at junit.framework.TestCase.run(TestCase.java:118)
    at junit.framework.TestSuite.runTest(TestSuite.java:208)
    at junit.framework.TestSuite.run(TestSuite.java:203)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
      

  5.   

    java.lang.NoClassDefFoundError: org/jaxen/JaxenException导入jaxen,在dom4j的lib里