Dom、Sax、Dom4j分别解析xml

一:Dom解析xml

package com.carlinfo.xmlparse;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

/**
 * 使用Dom解析Xml
 */
public class DomParseXml
{
    public static void main(String[] args) throws Exception
    {
        //第一步,创建Dom解析工厂
        DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance();
        //第二步,使用Dom解析工厂创建Dom解析器
        DocumentBuilder builder = builderFactory.newDocumentBuilder();
        //第三步,获取整个文档对象
        Document document = builder.parse(""D:/IDEA project/bigdata/src/bookstore.xml"");
        //第四步,获取根节点
        Element rootelement = document.getDocumentElement();
        //第五步,获取子节点
        NodeList bookchildnodes = rootelement.getChildNodes();
        //循环列出所有子节点
        for (int i = 0; i < bookchildnodes.getLength(); i++)
        {
            Node node = bookchildnodes.item(i);
           // System.out.println(node.getNodeType());
            //如果这个子节点不是文本节点,那么继续获取他的子节点
            if (node.getNodeType() != Node.TEXT_NODE)
            {
                Element bookElemen = (Element) node;
                String id = bookElemen.getAttribute("id");

                NodeList childNodes = bookElemen.getChildNodes();
                //再列出这一层所有的子节点
                for (int j = 0; j < childNodes.getLength(); j++)
                {
                    Node node1 = childNodes.item(j);
                   // System.out.println(node1);
                    //再判断,当这个节点不是文本节点的时候,输出他的子节点
                    if (node1.getNodeType() != Node.TEXT_NODE)
                    {
                        Element element = (Element) node1;
                        String elementTextContent = element.getTextContent();
                        System.out.println(elementTextContent);
                    }
                }
            }
        }

    }
}

二:Sax解析xml

package com.carlinfo.xmlparse;

import org.xml.sax.Attributes;
import org.xml.sax.HandlerBase;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.stream.events.StartDocument;
import java.io.File;

/**
 * 使用Sax解析xml
 */
public class SaxParseXml
{
    public static void main(String[] args) throws Exception
    {
        //创建Sax解析器工厂
        SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
        //使用Sax解析器工厂创建解析器
        SAXParser saxParser = saxParserFactory.newSAXParser();
        saxParser.parse(new File("D:/IDEA project/bigdata/src/bookstore.xml"), new DefaultHandler()
        {
            @Override
            public void startDocument() throws SAXException
            {
                System.out.println("文档的开始");
            }

            @Override
            public void endDocument() throws SAXException
            {
                System.out.println("文档的结束");
            }

            @Override
            public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
            {
                System.out.println("元素的开始");
            }

            @Override
            public void endElement(String uri, String localName, String qName) throws SAXException
            {
                System.out.println("元素的结束");
            }

            @Override
            public void characters(char[] ch, int start, int length) throws SAXException
            {
                System.out.println(new String(ch, start, length));
            }
        });


    }
}

三:Dom4j解析xml

package com.carlinfo.dom4jparse;

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

import java.io.InputStream;
import java.util.List;

public class Dom4jParse
{
    public static void main(String[] args) throws DocumentException
    {
        //创建dom4j的解析器
        SAXReader saxReader = new SAXReader();
        //获取类路径下面的文件最后作为一个流对象
        InputStream inputStream = Dom4jParse.class.getClassLoader().getResourceAsStream("bookstore.xml");
        //解析流对象代表的文件冰箱且返回一个文档对象
        Document document = saxReader.read(inputStream);
        //获取根节点
        Element rootElement = document.getRootElement();
        List<Element> bookList = rootElement.elements("book");
        for (Element bookElement : bookList)
        {
            String id = bookElement.attributeValue("id");
            String name = bookElement.element("name").getText();
            String author = bookElement.element("author").getText();
            System.out.println(id + "\t" + name + "\t" + author);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/Chenlele710147/article/details/84332624