文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

【JAVA基础】-JAVA开发中XML解析多种方法

2023-09-09 20:06

关注

【JAVA基础】-JAVA开发中XML解析多种方法

1、什么是XML

XML是可扩展标记语言(Extensible Markup Language)是一种标记语言,是从标准通用标记语言(SGML)中简化修改而来,它主要用到的有可扩展标记语言、可扩展式语言(XSL)、XBRL和XPath等。

XML设计用来传输和存储数据,而不是显示数据。

2、本文操作所用XML示例

<street>    <code>110101001code>    <name>东华门街道办事处name>    <areaCode>110101areaCode>    <provinceCode>11provinceCode>    <cityCode>1101cityCode>street>

如上示例使用简单的具有自我描述性的语法,第一行是XML声明。它定义XML的版本(1.0)和所使用的编码(UTF-8),描述文档的根元素。XML文档必须包含根元素,该元素是所有其他元素的父元素。XML文档是一个文档树,从根部开始,并扩展到树的最底部。具体如下图:

在这里插入图片描述

3、DOM解析XML文件

JAVA官方提供通过DOM实现对XML文件读取。DOM读取XML文件原理是:将整个XML文件预加载完毕后,才进行解析,在JAVA程序中读取XML文件效率取决于XML文件大小。

Dom解析XML步骤

  1. 获取DocumentBuilderFactory

    DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
  2. 通过DocumentBuilderFactory产生一个DocumentBuilder

    DocumentBuilder builder=factory.newDocumentBuilder();
  3. 利用DocumentBuilder的parser方法加载xml创建对象Document

    Document document=builder.parse(new File("street.xml"));
  4. 解析XML文件属性名和属性值

    NodeList nodeList = document.getElementsByTagName("book");Node node = nodeList.item(i);NamedNodeMap nameNodeMap = node.getAttributes();Node attr = nameNodeMap.item(i);//获取属性名String nodeName = attr.getNodeName();//获取属性值String nodeValue = attr.getNodeValue();
  5. 解析XML文件的节点名和节点值

    NodeList nodeList=document.getChildNodes();Node node = node.item(i);//获取element类型element类型节点的节点值String nodeName  = node.getNodeName();//获取element类型值String nodeValue = node.getTextContent();

Dom解析XML示例代码

 public void readXmlByDocument() throws Exception {     DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();     DocumentBuilder builder = factory.newDocumentBuilder();     Document document = builder.parse(new File("street.xml"));     Element root = document.getDocumentElement();     NodeList nodeList = root.getChildNodes();     int len = nodeList.getLength();     for (int i = 0; i < len; i++) {        Node node = nodeList.item(i);        String nodeName = node.getNodeName();        String localName = node.getLocalName();        System.out.println(nodeName);     } }

4、JDOM解析XML文件

meaven引用依赖

<dependency>     <groupId>org.jdomgroupId>     <artifactId>jdom2artifactId>     <version>2.0.6version>dependency>

JDOM解析XML步骤

  1. 创建SAXBuilder对象

    SAXBuilder saxBuilder = new SAXBuilder();
  2. 调用build方法获得Document对象

    Document document = saxBuilder.build(new FileInputStream("street.xml"));
  3. 获取根节点

    Element root = document.getRootElement();
  4. 获取根节点的直接子节点集合

    List<Element> children = root.getChildren();
  5. 遍历节点集合

    for (Element element: children) {}

JDOM解析XML示例代码

public void readXmlByJDom() throws Exception{    SAXBuilder builder = new SAXBuilder();    Document document = builder.build(new File("street.xml"));    Element root = document.getRootElement();    List<Element> children = root.getChildren();    for (Element element: children) {        String elementName= element.getName();        String elementText =element.getText();        System.out.println(elementName);        System.out.println(elementText);   }}

5、Dom4j解析XML文件

meaven引用依赖

<dependency>    <groupId>dom4j</groupId>    <artifactId>dom4j</artifactId>    <version>1.1</version>     <scope>test</scope> </dependency>

Dom4j解析XML步骤

  1. 创建SAXReader对象

    SAXReader reader=new SAXReader();
  2. 调用SAXReader的read方法加载XML文件并创建Document对象

    Document document = reader.read(new File("street.xml"));
  3. 通过Document的方法getRootElement获取根结点

    Element root = document.getRootElement();
  4. 获取子节点值

    String nameText = root.elementText("name");

Dom4j解析XML示例

public void readXMLJDom4() throws Exception{    SAXReader reader=new SAXReader();    Document document = reader.read(new File("street.xml"));    Element root = document.getRootElement();    QName qName = root.getQName();    String name = qName.getName();    String name1 = root.getName();    String nameText = root.elementText("name");    System.out.println(nameText);}

6、SAX读取并解析XML文件

Sax读取原理:Sax对xml文件的读取是采用事件机制的,当某事件发生时,会自动触发定义好的事件处理方法。基本的事件有:Document,Element,characters三种最基本的事件。

Dom4j解析XML步骤

7、总结

读取并解析XML有上面4种方案,根据不同的应用场合,使用恰当的方法。

DOM解析:一次性把XML文档内容加载到内存,构建Document对象。

  1. 不适合读取大容量的xml文件;
  2. Dom解析可以随意读取,甚至往回读取;
  3. Dom解析可以实现增删改查;

常用解析工具:Dom4j

SAX解析:读取一点,解析一点。

  1. 适合读取大容量的xml文件;
  2. 从上往下逐点读取,不能往回读;
  3. SAX解析通常只读取文件,不能对文件进行操作;

来源地址:https://blog.csdn.net/songjianlong/article/details/130548306

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯