Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法打印给定节点的输出。只能打印根元素_Java_Xml - Fatal编程技术网

Java 无法打印给定节点的输出。只能打印根元素

Java 无法打印给定节点的输出。只能打印根元素,java,xml,Java,Xml,我刚刚开始学习基于教程的JAVA xml=DOM4J,它在解析xml代码时更加灵活。因此,我着重于更多地理解DOM4J,因为与DOM解析器和JDOM相比,它的编码更少 我在打印节点的输出时遇到问题。任何帮助都将不胜感激!请容忍我,因为我仍在学习如何使用它,并更加熟悉它。为了更好地理解,请以简单的方式解释如何正确地执行它。谢谢大家! 我的代码基于TutorialPoint try { String src = "student.xml"; File inputFil

我刚刚开始学习基于教程的JAVA xml=DOM4J,它在解析xml代码时更加灵活。因此,我着重于更多地理解DOM4J,因为与DOM解析器和JDOM相比,它的编码更少

我在打印节点的输出时遇到问题。任何帮助都将不胜感激!请容忍我,因为我仍在学习如何使用它,并更加熟悉它。为了更好地理解,请以简单的方式解释如何正确地执行它。谢谢大家!

我的代码基于TutorialPoint

try {
        String src = "student.xml";
        File inputFile = new File(src);
        SAXReader reader = new SAXReader();

        Document doc = reader.read(inputFile);

        System.out.println("Root element: "
                + doc.getRootElement().getName());

        Element classElement = doc.getRootElement();

        List<Node> nodes = doc.selectNodes("/Section/Student");

        for (Node node : nodes){
            System.out.println("First Name" + node.selectSingleNode("FirstName").getText());
        }

    } catch (DocumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
这是我的XML文件

<?xml version = "1.0"?>
<Section>

<Student>
    <Idnumber>0000001</Idnumber>
    <FirstName>Cat</FirstName>
    <LastName>Dog</LastName>
</Student>
</Section>
我在控制台中收到的错误如下:

根元素:节 主线程java.lang.NoClassDefFoundError中的异常:org/jaxen/JaxenException 位于org.dom4j.DocumentFactory.createXPathDocumentFactory.java:230 位于org.dom4j.tree.AbstractNode.createXPathAbstractNode.java:207 在org.dom4j.tree.AbstractNode.selectNodesAbstractNode.java:164 在com.dls.csb.ParsingXML.mainParsingXML.java:30中引用一个:

为了使用DOM4J解析器,应用程序的类路径中应该有DOM4J-1.6.1.jar和jaxen.jar

显然,类路径中没有jaxenjar。如果您有dom4j-1.6.1.zip归档文件,您可以在lib文件夹中找到一个jaxenjar

我获取了您的代码,并在类路径上使用jaxenjar运行了它,它成功地运行了。你的代码似乎在做你想做的事情,只是你没有完全的依赖关系

Jaxen是一个javaxpath库,该行中的text/Section/Student

        List<Node> nodes = doc.selectNodes("/Section/Student");

是一个XPath表达式,用于选择作为根节元素的子元素的所有学生元素。

是否在服务器上部署应用程序?谢谢!我来之前就知道了。我忘了添加jaxen.jar,我只有dom4jjar。我也有一个问题,其他jar文件呢?没必要吗?@user3323654:这取决于你想做什么。其他JAR似乎包括针对XMLSchema或RELAXNG进行验证的功能,如果您不做这些事情,那么就不需要这些JAR。目前,不要向类路径添加任何其他JAR。如果以后遇到NoClassDefFoundError,请搜索这些JAR,看看其中是否有JVM抱怨找不到的类,如果是,请将该JAR添加到类路径中。非常感谢!祝你有美好的一天: