老师,这段代码为什么运行报错呢?而且List应该引用哪个包里面的呀?

老师,这段代码为什么运行报错呢?而且List应该引用哪个包里面的呀?

package com.imooc.dom4j;

import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

public class hrReader {
    public void XMLReader() {
        String file="D:\\月食\\xml\\src\\hr.xml";
        //SAXReader类是读取XML文件的核心类,用于将XML解析后以“树”的形式存储在内存中
        //在dom4j中,所有的标签都是用element进行的包装
        SAXReader reader = new SAXReader();
        try {
            Document document = reader.read(file);
            //获取XML文档的根节点,即hr标签
            Element root = document.getRootElement();
            //elements方法用于获取指定标签的集合
            List<Element> employees = root.elements("employee");
            for(Element employee : employees) {
                //elements方法用于获取唯一的根节点
                Element name = employee.element("name");
                //getText()方法用于获取标签文本
                String empName = name.getText();
                System.out.println(empName);
                //这一句的功能等于上面三句
                System.out.println(employee.elementText("age"));
                System.out.println(employee.elementText("salary"));
                Element department = employee.element("department");
                System.out.println(department.element("dname").getText());
                System.out.println(department.element("address").getText());
                Attribute att = employee.attribute("no");
                System.out.println(att.getText());
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    public static void main(String[] args) {
        hrReader reader = new hrReader();
        reader.XMLReader();
    }

}



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好!

  1. List是Java.util包下的

  2. 老师在本地测试你的代码是正确的

    http://img1.sycdn.imooc.com//climg/5e3a37de0913ceb005410336.jpg

  3. 请问你是报什么错误呢?建议你检查你的文件路径是否正确。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 写bug的 提问者 #1
    老师我加上这句就可以正常运行了,是为什么呢 String path = "D:/月食/xml/src/hr.xml"; File file = new File(path);
    2020-02-05 12:25:54
  • 写bug的 提问者 #2
    错误提示是 org.dom4j.DocumentException: unknown protocol: d at org.dom4j.io.SAXReader.read(SAXReader.java:464) at org.dom4j.io.SAXReader.read(SAXReader.java:303) at com.imooc.dom4j.hrWriter.writeXml(hrWriter.java:19) at com.imooc.dom4j.hrWriter.main(hrWriter.java:43) Caused by: java.net.MalformedURLException: unknown protocol: d at java.net.URL.<init>(URL.java:600) at java.net.URL.<init>(URL.java:490) at java.net.URL.<init>(URL.java:439) at com.sun.org.apache.xerces.internal.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:620) at com.sun.org.apache.xerces.internal.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:148) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:812) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643) at org.dom4j.io.SAXReader.read(SAXReader.java:445) ... 3 more
    2020-02-05 12:26:37
  • 好帮手慕柯南 回复 提问者 写bug的 #3
    同学你好,这个错误是因为你的路径中有中文,你使用File处理一下,可以解决这个问题。另外建议你路径中尽量不要写中文。祝学习愉快~
    2020-02-05 14:31:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师