java解析xml文件

java解析xml文件java解析xml常用的2种方法第一种dom解析第二种dom4j解析<?xmlversion=”1.0″encoding=”UTF-8″?><books><bookid=”001″><id>9</id><title>HarryPotter</title><author>JK.Rowling</author></bo

java解析xml文件"

java解析xml常用的2种方法(这2种可以解决开发中遇到的xml解析的所有问题)

第一种 dom解析

<?xml version="1.0" encoding="GBK"?>
<address>
	<linkman>
		<name>Van_DarkHolme</name>
		<email>van_darkholme@163.com</email>
	</linkman>
	<linkman1>
		<name>Bili</name>
		<email>Bili@163.com</email>
	</linkman1>
</address>
public void readXml() throws Exception { 
   
        //建立DocumentBuilderFactor,用于获得DocumentBuilder对象:
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        //建立DocumentBuidler;
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        //import org.w3c.dom.Document;
        Document document = documentBuilder.parse(new File("D:/1.xml"));
        NodeList node = document.getElementsByTagName("linkman");
        for (int i = 0; i < node.getLength(); i++) { 
   
            Element e = (Element)node.item(i);
            String name = e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
            String email = e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue();
            System.out.println(name);
            System.out.println(email);
        }

结果

Van_DarkHolme
van_darkholme@163.com

第二种 dom4j解析

<?xml version="1.0" encoding="UTF-8"?>
<books>
   <book id="001">
      <id>9</id>
      <title>Harry Potter</title>
      <author>J K. Rowling</author>
   </book>
   <book id="002">
      <title>Learning XML</title>
      <author>Erik T. Ray</author>
   </book>
   <book1 id="003">
      <title>Learning XML111</title>
      <author>Erik T. Ray111</author>
   </book1>
</books>

引入dom4j jar包

  <dependency>
            <groupId>org.dom4j</groupId>
            <artifactId>dom4j</artifactId>
            <version>2.1.3</version>
        </dependency>

代码

 public void readXml() throws Exception{ 
   
       //1.创建Reader对象
        SAXReader saxReader = new SAXReader();
         //2.加载xml
        Document document = saxReader.read(new File("D:/1.xml"));
        //3.获取根节点
        Element rootElement = document.getRootElement();
        // rootElement.elements()获取根节点下所有的节点,
        List<Element> elements = rootElement.elements();
        //获取节点book1下属性为id的值 003
       rootElement.element("book1").attribute("id").getValue()for (Element element : elements) { 
   
            //依次遍历根节点下的节点 book book book1
            element.getName();
            //依次遍历根节点下的节点对应属性为id的值 001 002 003
            System.out.println(element.attribute("id").getValue());
            System.out.println("----------------------------");
            //同样道理 继续依次获取该节点下的节点 
            List<Element> child = element.elements();
            for (Element element1 : child) { 
   
                /依次/获取子节点  id title author   、title  author、title author  
                 element1.getName();
                 //依次获取子节点的值 9 Harry Potter J K. Rowling、.......
                System.out.println(element1.getText());
            }
        }
        // 获取第二个节点book的属性为id的值 002
        elements.get(1).attribute("id").getValue();
        // 获取根节点下第二个节点book所有节点
        List<Element> elements1 = elements.get(1).elements();
        //获取根节点下第二个节点book节点下的第二个节点author的值 Erik T. Ray
         elements.get(1).elements().get(1).getText();
    }

使用dom解析将xml树结构全部加载到内存中,保留了树结构,可以对树结构进行增删改 但是xml过大会导致内存溢出
dom4j的SAXread是一行一行的解析的,不会产生内存问题,但是不能进行增删改操作

今天的文章java解析xml文件分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/30106.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注