解析XML文件内容本质就是文件内容的读取Input

    解析XML文件两种方式:
    DOM解析(Document Object Model)
    树结构处理方式
    将文档全部解析 形成一个树结构 节点—-标签
    优点 编程容易 缺点 必须将整个文档全部处理完毕(慢)

    SAX解析(Simple Api for Xml)——-扩展
    类似**流媒体方式
    基于事件的模式 解析时候触发一系列事件
    当某一个tag标签被解析的时候 激活后续的方法
    优点 快(不需要将所有文档都一次性处理完)
    缺点 编写很麻烦(复用性也不强)
    JDOM(Java-based Document Object Model)
    外部jar包 基于DOM方式 底层提升了性能
    DOM4J(Document Object Model for Java)
    外部jar包 基于JDOM方式 底层提升了性能

    采用DOM方式 Document Object Model
    1.需要一个工厂(建造工人)
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    2.利用工厂创建工人
    DocumentBuilder builder = factory.newDocumentBuilder();

    3.工人创建一个document对象(需要一张图纸 xml文件)
    File file = new File(“src/testxml/school.xml”); 我们要解析的xml文件路径
    Document document = builder.parse(file);

    4.解析xml文件
    获取根标签对象**(例如之前的school),有三种方式
    ①Element school = document.getDocumentElement();
    ②Element school = document.getElementById(“duyi”);//需要有dtd规则,通过id获取
    ③NodeList RootList = document.getElementsByTagName(“school”);
    Element school = RootList.item(0);

    根标签(例如school)中的子标签**(例如class)
    ①NodeList classList = document.getElementsByTagName(“class”);
    ②NodeList classList = school.getElementsByTagName(“class”);
    ③NodeList classList = school.getChildNodes();//需要有dtd规则,我们现在是知道只有一个直接子标签
    for(int i=0;i<classList.getLength();i++){
    //某一个class标签
    Element classEle = (Element)classList.item(i);
    String classID = classEle.getAttribute(“id”);
    String className = classEle.getAttribute(“name”);
    }


    class标签的子标签teacher,已知获取某个class标签(classEle)

    ① Element teacher = (Element)classEle.getElementsByTagName(“teacher”).item(0);**

    ② Element teacher = (Element)classEle.getFirstChild();//需要有dtd规则

    String teacherID = teacher.getAttribute(“id”);
    String teacherName = teacher.getAttribute(“name”);

    获取性别,性别标签包含的是文字
    Element teacherSexEle = (Element)teacher.getElementsByTagName(“sex”).item(0);
    String teacherSex = teacherSexEle.getTextContent();