XML --java学习笔记

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

  • 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系

XML的特点

  • XML中的“<标签名>”称为一个标签或一个元素,一般是成对出现的
  • XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
  • XML中只能有一个根标签
  • XML中的标签可以有属性
  • 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml

XML的创建

  • 就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello world.xml

IDEA创建XML文件

XML的语法规则

  • XML文件的后缀名为:xml,文档声明必须是第一行
  • XML中可以定义注释信息:<!--注释内容 -->
  • XML中书写”<” 、“&”等,可能会出现冲突,导致报错,此时可以用如下特殊字符替代
  • XML中可以写一个叫CDATA的数据区:<![CDATA[…..内容... ]]>,里面的内容可以随便写

XML的作用和应用场景

  • 本质是一种数据格式,可以存储复杂的数据结构,和数据关系
  • 应用场景:经常用来做为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行传输

解析XML文件

  • 使用程序读取XML文件中的数据
  • 注意:程序员并不需要自己写原始的I0流代码来解析XML,难度较大!也相当繁琐!
  • 其实,有很多开源的,好用的,解析XML的框架,最知名的是:Dom4j(第三方研发的)

使用Dom4]解析出XML文件

需求:使用Dom4]把一个XML文件的数据进行解析
分析:

  1. 下载Dom4j框架,官网下载。
  2. 在项目中创建一个文件夹:lib
  3. 将dom4j-最新版本.jar文件复制到 lib 文件夹
  4. 在jar文件上点右键,选择 Add as Library ->点击OK
  5. 在类中导包使用

DOM4J解析XML文件的思想:文档对象模型

Dom4j解析XML-得到Document对象

  • SAXReader:Dom4j提供的解析器,可以认为是代表整个Dom4j框架

Element提供的方法

代码演示:

xml文件:

<?xml version="1.0" encoding="utf-8" ?>
<!-- 这是一个注释,上面的头部声明必须写在第一行,必须有 -->
<!--根标签只能有一个-->
<users>
    <user id = '1'>
        <name>李白</name>
        <age>33</age>
        <sex>男</sex>
        <password>dhzjtsl</password>
    </user>
    <admin>zeyu</admin>
    <user id = '2'>
        <name>吕布</name>
        <age>25</age>
        <sex>男</sex>
        <password>chanchan</password>
    </user>
    <user id = '3'>
        <name>貂蝉</name>
        <age>18</age>
        <sex>女</sex>
        <password>zilong</password>
    </user>
    <user id = '4'>
        <name>赵云</name>
        <age>23</age>
        <sex>男</sex>
        <password>chanchan</password>
    </user>
</users>

test:

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

import java.util.List;

public class Dom4jTest1 {
    public static void main(String[] args) throws Exception {
        //1、创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();

        //2、使用saxReader对象把需要解析的xml文件读成一个Document对象
        Document document = saxReader.read("properties-xml-log\\helloworld.xml");

        //3、从文档对象中解析xml文件的全部数据
        Element root = document.getRootElement();
        System.out.println(root.getName());

        //4、获取根元素下的全部一级子元素
        List<Element> elements = root.elements();
        //List<Element> admin = root.elements("admin"); 获取指定元素名的元素列表
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        //5、获取当前元素下的某个子元素
        Element admin = root.element("admin");
        System.out.println(admin.getText());

        //如果下面有很多子元素user,默认获取第一个
        Element user = root.element("user");
        System.out.println(user.elementText("name"));

        //6、获取元素的属性信息
        //方法一
        System.out.println(user.attributeValue("id"));
        //方法二
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        //7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementTextTrim("age"));    //elementTextTrim 取出文本去除前后空格
        System.out.println(user.elementText("sex"));


    }
}

运行结果:

使用程序把数据写出到XML文件中去不建议用clom4j做

推荐直接把程序里的数据拼接成XML格式,然后用IO流写出去!

代码演示:

package com.zeyu.xml;

import java.io.BufferedWriter;
import java.io.FileWriter;

public class Dom4jTest2 {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"utf-8\" ?>\r\n");
        sb.append("<student>\r\n");
        sb.append("\t<name>").append("李白").append("</name>\r\n");
        sb.append("\t<sex>").append("男").append("</sex>\r\n");
        sb.append("\t<height>").append("168").append("</height>\r\n");
        sb.append("</student>");

        try (
                BufferedWriter bw = new BufferedWriter(new FileWriter("properties-xml-log\\student.xml"));
                ){
            bw.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

运行结果:

约束文档

  • 专门用来限制xml书写格式的文档,比如:限制标签、属性应该怎么写

约束文档分类

  • DTD文档
  • Schema文档

DTD文档

  1. 编写DTD约束文档,后缀必须是.dtd
  2. 在需要编写的XML文件中导入该DTD约束文档
  3. 然后XML文件,就必须按照DTD约束文档指定的格式进行编写,否则报错

schema

  1. 编写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看
  2. 在需要编写的XML文件中导入该schema约束文档
  3. 按照约束内容编写XML文件的标签

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/517774.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数字信号处理实验---FFT分析

一、题目&#xff1a; 二、实验要求&#xff1a; 1、绘制图形时&#xff0c;尽量选用已经提供的函数。 2、所有的图形&#xff0c;需要加上横坐标、纵坐标以及标题的说明。 3、将设计的程序保存为脚本文件&#xff0c;在实验报告中&#xff0c;需写出程序语句。 4、Matlab程…

【GlobalMapper精品教程】073:像素到点(Pixels-to-Points)从无人机图像轻松生成点云

文章目录 一、工具介绍二、生成点云三、生成正射四、生成3D模型五、注意事项一、工具介绍 Global Mapper v19引入的新的像素到点工具使用摄影测量原理,从重叠图像生成高密度点云、正射影像及三维模型。它使LiDAR模块成为已经功能很强大的的必备Global Mapper扩展功能。 打开…

安装geopandas很简单。。。

创建新环境 创建新环境并不是绝对必要的&#xff0c;但考虑到安装来自不同通道的其他地理空间包可能会导致依赖冲突 &#xff0c;安装新环境可能是很好的做法&#xff0c;在干净的环境中堆叠&#xff0c;重新开始。 以下命令创建一个名为geo_env的新环境&#xff0c; 将其配置…

CANoe之使用以及车载项目实操总结

以下是我通过8年的项目实操自我总结的一些经验和技术&#xff0c;作为一名奋斗在一线的研发人员&#xff0c;无时无刻不在做自我总结&#xff0c;所有的总结都是通过日报、周报、月报提炼出来的&#xff0c;实践是检验技术的唯一标准&#xff1b; 欢迎大家的交流和分享 思维导…

VSCODE使用VSIX安装扩展

VSCode安装扩展特别慢&#xff0c;使用命令行安装告别龟速&#xff1a; code --install-extension当然&#xff0c;我这个是在WSL 的linux上安装的&#xff0c;Windows一样的。 VSCode扩展商店网页链接&#xff1a;https://marketplace.visualstudio.com/vscode

时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测

时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测 目录 时序预测 | Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现SOM-BP自组织映射结合BP神经网络时间序列预测&#xff08;完整源码…

LeetCode-994. 腐烂的橘子【广度优先搜索 数组 矩阵】

LeetCode-994. 腐烂的橘子【广度优先搜索 数组 矩阵】 题目描述&#xff1a;解题思路一&#xff1a;多源广度优先搜索&#xff08;队列实现&#xff09;解题思路二&#xff1a;哈希表实现&#xff0c;先找出所有腐烂和新鲜橘子的集合{}类似于set()。每剔除一次time1解题思路三&…

ChernoCPP 2

视频链接&#xff1a;【62】【Cherno C】【中字】C的线程_哔哩哔哩_bilibili 参考文章&#xff1a;TheChernoCppTutorial_the cherno-CSDN博客 Cherno的C教学视频笔记&#xff08;已完结&#xff09; - 知乎 (zhihu.com) C 的线程 #include<iostream> #include<th…

微信小程序怎么制作?制作一个微信小程序需要多少钱?

随着移动互联网的快速发展&#xff0c;微信小程序已成为连接用户与服务的重要桥梁。它以其便捷性和易用性&#xff0c;为各类企业和个人提供了一个全新的展示和交易平台。那么&#xff0c;如何制作一个微信小程序&#xff1f;又需要投入多少资金呢&#xff1f;本文将为您提供全…

H5面临的网络安全威胁和防范措施

H5&#xff0c;是基于HTML5技术的网页文件。HTML&#xff0c;全称Hyper Text Markup Language&#xff0c;即超文本标记语言&#xff0c;由Web的发明者Tim Berners-Lee与同事Daniel W. Connolly共同创立。作为SGML的一种应用&#xff0c;HTML编写的超文本文档能够独立于各种操作…

【性能测试】接口测试各知识第2篇:学习目标,1. 理解接口的概念【附代码文档】

接口测试完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;接口测试&#xff0c;学习目标学习目标,2. 接口测试课程大纲,3. 接口学完样品,4. 学完课程,学到什么,5. 参考:,1. 理解接口的概念。学习目标&#xff0c;RESTFUL1. 理解接口的概念,2.什么是接口测试…

文件夹0字节:原因、恢复与预防全攻略

在日常使用电脑或移动设备的过程中&#xff0c;我们经常会遇到一些数据问题&#xff0c;其中文件夹0字节的问题尤为常见且令人头疼。当原本存储着重要文件的文件夹突然变为0字节&#xff0c;我们往往感到束手无策。面对这种情况&#xff0c;我们不仅要了解问题的原因&#xff0…

【RealSense】Ubuntu20.04 安装 Intel® RealSense™ ROS 并使用 D435i 测试

【RealSense】Ubuntu20.04 安装 Intel RealSense™ ROS 并使用 D435i 测试 1 本机环境2 安装流程3 存在的 bug3.1 Resource not found: rgbd_launch 1 本机环境 Ubuntu20.04ROS Noetic 2 安装流程 参考文档: Link 安装 Intel RealSense™ SDK 2.0&#xff0c;参考上一篇文章:…

基于spring boot的漫画之家系统

基于spring boot的漫画之家系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开发软件&…

ML.NET(二) 使用机器学习预测表情分析

这个例子使用模型进行表情分析&#xff1a; 准备数据&#xff1a; happy,sad 等&#xff1b; using Common; using ConsoleApp2; using Microsoft.ML; using Microsoft.ML.Data; using System.Diagnostics; using static Microsoft.ML.Transforms.ValueToKeyMappingEstimator;…

主干网络篇 | YOLOv5/v7 更换骨干网络之 HGNetv2 | 百度新一代超强主干网络

本改进已融入到 YOLOv5-Magic 框架。 论文地址:https://arxiv.org/abs/2304.08069 代码地址:https://github.com/PaddlePaddle/PaddleDetection 中文翻译:https://blog.csdn.net/weixin_43694096/article/details/131353118 文章目录 HGNetv2网络结构1.1 主干网络1.2 颈部…

汽车疲劳测试试验平台技术要求(北重厂家)

汽车疲劳测试试验平台技术要求通常包括以下几个方面&#xff1a; 车辆加载能力&#xff1a;测试平台需要具备足够的承载能力&#xff0c;能够同时测试多种车型和不同重量的车辆。 动力系统&#xff1a;测试平台需要具备稳定可靠的动力系统&#xff0c;能够提供足够的力和速度来…

RH850P1X芯片学习笔记-Clocked Serial Interface H (CSIH)

文章目录 Features of RH850/P1x-C CSIHUnitsRegister Base AddressClock SupplyInterrupt RequestsHardware ResetExternal Input/Output Signals数据一致性检查 OverviewFunctional OverviewFunctional Overview DescriptionBlock Diagram RegistersList of RegistersCSIHnCT…

典型病例(第二期):血糖18.3,小便多且泡沫难消,滋阴补肾效果显著

案例分享&#xff1a; 患者廖先生&#xff0c;男&#xff0c;43岁 主诉&#xff1a;身体明显特别消瘦&#xff0c;血糖检测达到18.3&#xff0c;患者口干口渴&#xff0c;小便频繁&#xff0c;且带有很难消散的泡沫&#xff0c;疲倦乏力&#xff0c;多食易饥&#xff0c;每天…

C/S医学影像PACS系统源码主要应用是什么?

C/S医学影像PACS系统源码主要应用是什么&#xff1f; 一套基于VC MSSQL开发的PACS系统源代码&#xff0c;医学影像PACS系统&#xff0c;全称为Picture Archiving and Communication Systems&#xff0c;即医学影像归档和通信系统。它是应用在医院影像科室的系统&#xff0c;主…