XML解析——Jaxp解析器

Jaxp解析器

1.Jaxp解析器在jdk的javax.xml.parsers包内
    *四个类: 分别针对DOM和SAX解析的类
    1.DOM:
        *DocumentBuilder 解析器类
        *DocumentBuilderFactory解析器工厂类
    2.SAX:
        *SAXParser 解析器类
        *SAXParserFactory 解析器工厂类

DOM解析XML

1.DocumentBuilder
    *这是一个抽象类,不能new
    *这个类的实例可以从DocumentBuilderFactory.newDocumentBuilder()方法获取
    *解析xml使用parse("xml文件路径")方法, 返回Document整个文档, document是一个接口,父节点是Node,如果在document接口中找不到的方法,可以在Node接口中找.
    
    *document的方法
        1.getElementsByTagName(String tagname) 返回一个标签集合 NodeList
        2.createElement(String tagName) 创建一个标签
        3.createTextNode(String data) 创建文本
        4.appendChild(Node newChild) 把节点添加到标签下
        5.removeChild(Node oldChild) 删除节点
        6.getParentNode() 获取父节点
    *NodeList的方法
        1.getLength() 得到集合的长度
        2.item(int index) 下表取到具体的值
        3.getTextContent() 得到标签里的内容
2.DocumentBuilderFactory
    *抽象类
    *通过newInstance()获取DocumentBuilderFactory的实例.

SAX解析XML

1.SAX解析XML
    *SAXParser
        *此类的实例可以从 SAXParserFactory.newSAXParse()方法获取
        *解析xml使用parse​(File f, DefaultHandler dh) arg1: xml路径 arg2: 事件处理器   
    *SAXParserFactory
        *newInstance()方法得到
    *DefaultHandler
        void startElement​(String uri, String localName, String qName, Attributes attributes) 接收元素开始的通知。 qName 返回标签名称.
        void characters​(char[] ch, int start, int length) 接收元素内的字符数据通知。
        oid endElement​(String uri, String localName, String qName) 接收元素结尾的通知。
        ![](https://img2020.cnblogs.com/blog/1668748/202004/1668748-20200424104204462-445270891.png)
        当解析到开始标签的时候, 自动执行startElement方法
        当解析到文本的时候, 自动执行characters方法
        当解析到结束标签时候, 自动执行endElement方法
posted @ 2020-04-24 10:43  林jj  阅读(150)  评论(0编辑  收藏  举报