三种xml解析方法

这篇博客详细介绍了XML解析的三种方法:dom4j、DOM和Jsoup。通过示例代码展示了如何使用这些库读取和解析XML文件,包括获取元素、遍历节点和打印节点内容。对于大型XML文件,推荐使用dom4j,因为它比DOM更节省内存。同时,还提供了Jsoup解析的示例,该库在解析HTML时特别方便。
摘要由CSDN通过智能技术生成

xml解析

<?xml version="1.0" encoding="UTF-8"?>

<Pandas>
  <panda>
    <name>金虎</name>
    <city>重庆</city>
    <age>2</age>
  </panda>
  <panda>
    <name>绩笑</name>
    <city>成都</city>
    <age>2</age>
  </panda>
  <panda>
    <name>雪宝</name>
    <city>上海</city>
    <age>2</age>
  </panda>
</Pandas>

dom4j解析(导入dom4j.jar包)

 public static void dom4J(File file) throws DocumentException, MalformedURLException {
        //获取SAXRead对象
        SAXReader reader=new SAXReader();
        //获取存放xml信息的Document对象
        org.dom4j.Document document=reader.read(file);
        //获取根结点
        Element root=document.getRootElement();
        //获取迭代器
        Iterator iterator = root.elementIterator();
        //遍历子节点
        while (iterator.hasNext()){
           //接收当前遍历节点
            Element element= (Element) iterator.next();
            //遍历当前节点子节点
            Iterator iterator1 = element.elementIterator();
            while (iterator1.hasNext()){
                Element next = (Element) iterator1.next();
                //打印当前节点存放值
                System.out.println(next.getData());
            }
        }

    }

dom解析(jdk自带无需导包,但是消耗内存,不推荐使用)

public static void dom(File file) throws ParserConfigurationException, IOException, SAXException {
   //特定步骤传入xml文件对象即可
    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
    DocumentBuilder builder=factory.newDocumentBuilder();
    Document parse = builder.parse(file);
    
    //和js语法类似
    NodeList list=parse.getElementsByTagName("panda");
    //遍历节点
    for(int i=0;i<list.getLength();i++){
    //打印结点内文本信息
        System.out.println(list.item(i).getTextContent());
    }
}

jsoup解析(导入jsoup.jar)//比较喜欢用的

 /**
     * jsoup解析
     * @param file
     * @throws IOException
     */
    public static void readInJsoup(File file) throws IOException {
        org.jsoup.nodes.Document parse = Jsoup.parse(file, "utf-8");
        Elements pandas = parse.getElementsByTag("Pandas");
        ListIterator<org.jsoup.nodes.Element> elementListIterator = pandas.listIterator();
        while (elementListIterator.hasNext()){
            org.jsoup.nodes.Element child = elementListIterator.next();
            System.out.println(child.getElementsByTag("name").text());
            System.out.println(child.getElementsByTag("city").text());
            System.out.println(child.getElementsByTag("age").text());
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值