会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132837个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2656楼

老师,我照着视频敲的,这个怎么解决?

image.png

源码

package com.bjsxt.server;

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

import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class WebDom4j { //用于解析XML
    private List<Entity> entityList; //用于存储N多Entity,而每一个Entity都是servlet-name和servlet-class
    private List<Mapping> mappingList; //用于存储N多Mapping,而每一个Mapping都是一个servlet-name和N多个url-pattern

    public List<Entity> getEntityList() {
        return entityList;
    }

    public void setEntityList(List<Entity> entityList) {
        this.entityList = entityList;
    }

    public List<Mapping> getMappingList() {
        return mappingList;
    }

    public void setMappingList(List<Mapping> mappingList) {
        this.mappingList = mappingList;
    }

    public WebDom4j() {
        entityList = new ArrayList<Entity>();
        mappingList = new ArrayList<Mapping>();
    }
    public Document getDocument(){
        try {
            //(1)创建SAXReader对象
            SAXReader reader = new SAXReader();
            //(1)调用reader方法
            return reader.read(new File("D:\\MyCode\\IdeaProjects\\firstPreject\\http_server2\\src\\WEB_INFO\\web.xml"));
        } catch (DocumentException e) {
            e.printStackTrace();
        }
        return null;
    }
    public void parse(Document doc){
        //获取根元素
        Element root = doc.getRootElement(); //web-app
        //获取servlet子元素
        for (Iterator<Element> ite =  root.elementIterator("servlet");ite.hasNext();){
            Element subElement = ite.next(); //得到每一个servlet
            //创建一个实体类Entity
            Entity ent = new Entity(); //用于存储servlet-name和servlet-class
            for (Iterator<Element> subIte = subElement.elementIterator();subIte.hasNext();){
                Element ele = subIte.next(); //可能是servlet-name,也可能是servlet-class
                if ("servlet-name".equals(ele.getName())){
                    ent.setName(ele.getText()); //给实体类中的name赋值
                }else if ("servlet-class".equals(ele.getName())){
                    ent.setClazz(ele.getText()); //给实体类中的clazz赋值
                }
                //将Entity添加到集合中
                entityList.add(ent);
                for (Entity entity: entityList
                     ) {
                    System.out.println(entity.getName() + "\t" +entity.getClazz());
                }
            }
        }
    }
    //测试
    public static void main(String[] args) {
        WebDom4j web = new WebDom4j();
        web.parse(web.getDocument());
    }
}

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/手写服务器项目(旧) 2666楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2667楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637