首页 > 其他分享 >超详细的XML介绍【附带dom4j操作XML】

超详细的XML介绍【附带dom4j操作XML】

时间:2024-09-21 16:19:56浏览次数:8  
标签:XML dom4j 附带 元素 element 节点 Element addElement

XML简介

XML(EXtensible Markup Language),可扩展标记语言**

特点

  • XML与操作系统、编程语言的开发平台无关

  • 实现不同系统之间的数据交换

作用

  • 数据交互

  • 配置应用程序和网站

  • Ajax基石

XML文档结构

1.声明 一般是XML文档的第一行

2.文档描述信息

声明的组成:

  • version:文档符合xml1.0规范

  • encoding:文档字符编码,默认为UTF-8

文档结构解释:

  • 根元素:只有一个

  • 根元素的开始标签:放在最前面

  • 根元素的结束标签:放在最后面

  • 标签内容在开始标签和结束标签之间

XML标签

XML文档内容由一系列标签元素组成

 <元素名 属性名=“属性值”>元素内容</元素名>
  • 属性值用双引号包裹

  • 一个元素可以有多个属性

  • 属性值中不能直接包含<、“、&

  • 不建议使用的字符:‘、>

XML编写注意事项

  • 所有XML元素都必须有结束标签

  • XML标签对大小写敏感

  • XML必须正确的嵌套

  • 同级标签以缩进对齐

  • 元素名称可以包含字母、数字或其他的字符

  • 元素名称不能以数字或者标点符号开始

  • 元素名称中不能含空格

DOM解析XML

DOM介绍

  • 文档对象模型(Document Object Model)

  • DOM把XML文档映射成一个倒挂的树

常用接口介绍

DOM解析包:org.w3c.dom

常用接口常用方法说明
Document:表示整个 XML 文档NodeList getElementsByTagName(String Tag)按文档顺序返回文档中指定标记名称的所有元素集合
Element createElement(String tagName)创建指定标记名称的元素
Node:该文档树中的单个节点NodeList getChildNodes()获取该元素的所有子节点,返回节点集合
Element:XML 文档中的一个元素String getTagName()获取元素名称

DOM解析XML文件步骤

  • 创建解析器工厂对象

  • 解析器工厂对象创建解析器对象

  • 解析器对象指定XML文件创建Document对象

  • 以Document对象为起点操作DOM树

由外到内,由上到下解析

解析的操作和方法

1. 读取xml文件 SAXReader()

 //将xml文件加载到内存中 XML解析器
 SAXReader saxReader = new SAXReader();
 //document 加载执行xml文档获取Document对象
 Document document = saxReader.read(XML路径);

2.获取XML根节点getRootElement()

 Element rootElement = document.getRootElement();

3. 获取当前节点下所有子节点 elements()

 //获取根节点下所有子节点
 List<Element> Elist = rootElement.elements();

4. 根据指定子元素名,获取元素下所有子节点

 
//获取节点名称为books下所有子节点
 List<Element> Elist = rootElement.elements(“books”);

5. 根据指定子元素名,获取子元素对象,如果重复,则获取第一个

 
//获取节点名称为books下单个子节点
 Element element= rootElement.element(“books”);

6. 设置元素文本内容 setText()

 newelement.setText("内容");

7. 获取当前节点文本内容 getText()

 elenent.getText()

8. 根据指定子元素名,获取元素中的文本

e.elementText(“book”)

9. 获取当前节点属性 attributeValue(“属性名”)

e.attributeValue("name")

11.创建节点Element对象.addElement("节点名")

Element newelement = rootElement.addElement("span");

12.节点添加,修改属性Element对象.addAttribute("节点属性名",“属性值”)

newelement.addAttribute("type","属性值");

13.新XML添加Documen对象

Document read = DocumentHelper.createDocument();

14.设置XML编码

OutputFormat 
OutputFormat outputFormat=OutputFormat.createPrettyPrint();
outputFormat.setEncoding("UTF-8");

15.写入XML文件

//写入XML文件的位置 以及指定的格式
XMLWriter xmlWriter=new XMLWriter(new FileWriter("cs.xml"),outputFormat);
//开始写入XML文件   写入Document对象
xmlWriter.write(document);
xmlWriter.close();

引入dom4j jar包

解析XML

public static void showXml(){
        try {
            SAXReader saxReader = new SAXReader();
            Document read = saxReader.read("index01/src/students.xml");
            //读取根元素
            Element rootElement = read.getRootElement();
            System.out.println("根元素名称:"+rootElement.getName());
            List<Element> elements = rootElement.elements();
            for (Element element : elements) {
                System.out.println( "根元素下面的元素的名称:"+element.getName()+",id属性的值为:"+element.attributeValue("id"));
                Element element1 = element.element("name");
                System.out.println("下面名为name元素的文本:"+element1.getText());
                Element element2 = element.element("age");
                System.out.println("下面名为age元素的文本:"+element2.getText());
                Element element3 = element.element("score");
                System.out.println("下面名为score元素属性为value的值:"+element3.attributeValue("value"));

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

修改Xml

public static void updateXml(){
        SAXReader saxReader = new SAXReader();
        try {
            Document read = saxReader.read("index01/src/students.xml");
            Element rootElement = read.getRootElement();
            List<Element> elements = rootElement.elements();
            for (Element element : elements) {
                if ("1002".equals(element.attributeValue("id"))){
                    Element element1 = element.element("name");
                    //修改第二个name元素名  李四==>王五
                    element1.setText("王五");
                }
            }
            //新增元素
            Element element = rootElement.addElement("student");
            element.addAttribute("id","1003");
            element.addElement("name").addText("马六");
            element.addElement("age").addText("26");
            element.addElement("score").addAttribute("value","99");

            XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/students.xml"));
            xmlWriter.write(read);
            System.out.println("修改成功!!!");
            xmlWriter.close();

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

新增XML文件

public static void insertXml() {

    //类方法,创建一个document对象
        Document document = DocumentHelper.createDocument();
        try {
            Element root = document.addElement("books");
            Element book1 = root.addElement("book").addAttribute("id", "book101");
            book1.addElement("author").setText("张三");
            book1.addElement("type").setText("文学");
            book1.addElement("from").setText("北京出版社");
            Element book2 = root.addElement("book").addAttribute("id", "book102");
            book2.addElement("author").setText("李四");
            book2.addElement("type").setText("历史");
            book2.addElement("from").setText("上海出版社");
            XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/books.xml"));
            xmlWriter.write(document);
            xmlWriter.close();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

删除XML元素

public static void deleteXml() {
        SAXReader saxReader = new SAXReader();
        try {
            Document read = saxReader.read("index01/src/books.xml");
            Element rootElement = read.getRootElement();
            List<Element> elements = rootElement.elements();
            for (Element element : elements) {
                if (element.attributeValue("id").equals("book101")) {
                    Element element1 = element.element("author");
                    element.remove(element1);
                    System.out.println("删除成功");
                }
            }
            XMLWriter xmlWriter = new XMLWriter(new FileWriter("index01/src/books.xml"));
            xmlWriter.write(read);
            xmlWriter.close();


        } catch (Exception e) {
            e.printStackTrace();
        }
    }

标签:XML,dom4j,附带,元素,element,节点,Element,addElement
From: https://blog.csdn.net/sksnbdkdisbsnskd/article/details/142419080

相关文章

  • flowable 流程动态设置监听器(非xml中定义)及发起时从驳回节点开始审批实现
    一、flowable使用代码动态修改监听器1、配置类@ConfigurationpublicclassFlowableGlobListenerConfig{@Lazy@AutowiredprivateTaskStartListenertaskStartListener;@Lazy@AutowiredprivateTaskCompleteListenertaskCompletedListener;......
  • BeautifulSoup与lxml解析网页:技术详解与实战案例
    在Python的Web数据抓取和网页解析领域,BeautifulSoup和lxml是两个极为强大且常用的库。它们能够帮助开发者轻松地从HTML或XML文档中提取所需数据,广泛应用于爬虫开发、数据预处理、自动化测试等领域。本文将详细介绍如何使用BeautifulSoup和lxml解析网页,并通过丰富的代码和案例帮助......
  • xml字符串转JSON字符串
    xml字符串转JSON字符串,可以直接通过jackson提供的方法进行快速转换。在web项目中通常会引入spring-boot-starter-web依赖。但是spring-boot-starter-web依赖包括Jackson的JSON处理库(如jackson-databind、jackson-core等),不一定直接包含处理XML的Jackson库(如jackson-dataformat-xml......
  • 最终版本的pom.xml(springboot连接hive)
    1<?xmlversion="1.0"encoding="UTF-8"?>2<projectxmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"3xsi:schemaLocation="http://maven.apa......
  • XML映射器-高级查询结果映射
    01-高级查询结果映射emp表dept表02-多表关联查询映射多对一映射项目中Emp类的数据项目中dept类的数据想要多表查询需要建个公共类里面写入两个表中的属性,如下面方法type里要写用到的类型,由于继承Emp所有Emp里面的属性直接写,column是写数据库的别字,property是......
  • C#——LINQ to XML(使用 Descendants 方法查找单个子代)
    xml位于命名空间中时查找staticvoidMain(string[]args){XElementroot=XElement.Parse(@"<aw:Rootxmlns:aw='http://www.efun.com'><aw:Child1><aw:GrandChild1>GC1Value</aw:GrandChild1>&l......
  • C#——LINQ to XML(内容快速查找)
    staticvoidMain(string[]args){XElementpurchaseOrder=XElement.Load("Contacts.xml");stringpartNos=(string)(fromiteminpurchaseOrder.Descendants("City")......
  • XML标记语言
    XML简介XML(可扩展标记语言)是一种标记语言,设计用于存储和传输数据。与HTML相比,XML主要用于描述数据的内容,而不是展示数据的外观。它由万维网联盟(W3C)制定,是一种跨平台、系统无关的语言。XML的核心特性之一是它的可扩展性,允许用户根据需要创建自定义标签,从而使得XML可以在......
  • C#里方法的怎么编写XML文档注释说明,用于调用时参数提示等
    一.什么是xml的注释?答:XML注解是一种用于描述XML文档结构和元素内容的标记语言。它是通过在XML文档中使用特殊的标记来定义文档结构和元素属性的。XML注解通常用于数据编码和数据交换的应用程序之间,以确保数据的一致性和互操作性。XML注解具有良好的可扩展性和可读性,因此它通......
  • 基于uniapp小程序的自助点餐系统附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图核心技术介绍小程序框架Uniapp前端框架Vue持久层框架MyBaits为什么选择我代码参考数据库参考测试用例参考源码获取前言......