网站首页 > 博客文章 正文
XML的简介
定义
HTML:超文本标记语言
XML:eXtensible Markup Language 可扩展标记语言 version="1.0"
- 可扩展:所有的标签都是自定义的。
- 功能:数据存储
- 配置文件(最主要的使用场景)
- 数据传输(一般不使用xml做数据传输,而使用json代替)
html与xml区别:
- html语法松散,xml语法严格
- html做页面展示,xml做数据存储
- html所有标签都是预先定义好的,xml所有标签都是自定义的
xml语法
文档声明:
- 必须写在xml文档的第一行。
- 写法:
- ? <?xml version="1.0" ?>
- 属性:
- version:版本号 固定值 1.0
- encoding:指定文档的码表。默认值为 iso-8859-1
- standalone:指定文档是否独立 yes 或 no,是否受其他文件约束 ,
- ? yes - 不受其他文件约束; no - 受其他文件约束
- 跟约束文件相关的
元素:xml文档中的标签
- 文档中必须有且只能有一个根元素(根标签)
- 标签需要正确闭合。 <student/> 或<name> </name>
- 标签需要正确嵌套
- 标签名称要遵守:
- 标签名称区分大小写
- 标签名不能以数字开头
文本:
- 转义字符:> > ; < < ;
- CDATA : 中括号内的数据会原样显示
- <![CDATA[ 数据内容 ]]>
属性:
- 属性值必须用引号引起来。单双引号都可以
注释:
<!-- -->
xml约束(了解):
定义
约束就是xml的书写规则
约束的分类:
dtd(约束力度不够,现在基本不使用):
dtd分类: * 内部dtd:在xml内部定义dtd * 外部dtd:在外部文件中定义dtd * 本地dtd文件:<!DOCTYPE students SYSTEM "student.dtd"> * 网络dtd文件:<!DOCTYPE students PUBLIC "名称空间" "student.dtd"> <!ELEMENT students (student*) > : 表示students标签中可以有0-n个student标签 <!ELEMENT student (name,age,sex)> : 表示student标签中必须有name,age,sex并且顺序要按这个来 <!ELEMENT student (name age sex)> : 表示student标签中可以有name,age,sex <!ELEMENT student (name|age|sex)> : 表示student标签中只能有name,age,sex三个中的一个
schema(了解):
导入xsd约束文档: 1、编写根标签 2、引入实例名称空间 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3、引入名称空间 xsi:schemaLocation="http://www.itcast.cn/xml student.xsd" 4、引入默认的名称空间
XML解析(重点)
解析xml的目的
- 用Java代码读取xml中的数据 (最重要的)
- 用Java代码往xml中写入数据 ( 几乎用不到,只会出现在数据传输中,而数据传输基本不会使用xml 而使用 json )
xml的解析思路(了解)
DOM:将文档加载进内存,形成一颗dom树( document对象 ) ,将文档的各个组成部分封装为一些对象。
- 优点:在内存中会形成dom树,写代码就非常方便,可以对dom树进行增删改查。
- 缺点:dom树 非常占内存,解析速度慢。
SAX:逐行读取,基于事件驱动
- 优点:不占内存,解析速度快
- 缺点:只能读取,不能回写,而且使用不方便
常用的xml解析器
JAXP:sun公司提供的解析。支持dom和sax。(不常用)
JDOM(后来分裂了)
DOM4J(document for java 民间组织开发的,但是它是事实方式。非常好。 支持dom)
关键是获取标签,只要标签获取到了,那么通过 attribute() 方法能获取 属性对象,通过 getText()方法能获取标签中的文本,通过 getName() 方法获取标签名
接下来的关键是:怎么获取标签。有两种方法: 迭代器, elements(), element (“标签名”)
步骤:
- 1.导入jar包 dom4j.jar
- 2.创建解析器 SAXReader reader = new SAXReader();
- 3.解析xml 获得 document 对象 Document document = reader.read( url ); 获取根节点 Element root = documen.getRootElement()
关于DOM4J解析的总结:
1.获取标签
? 1.1 迭代器(比较麻烦)
? 1.2 elements() 获取所有子标签 elements("标签名") 获取指定标签名的子标签
2.获取文本
? getText()
3.获取属性
? attributes() 获取所有属性 获取的是Attribute对象的集合
? attribute("属性名") 获取对应属性名的一个属性 获取的是 Attribute 对象
? 使用attribute对象获取属性值 : getValue()
XPATH(属于DOM4J中的,用于查询特定的节点)
- 定义了一种规则。
- 使用的方法:
- selectSingleNode():
- selectNodes():
- 步骤:
- 1、注意:导包: jaxen...jar
- 2、创建解析器SAXReader reader = new SAXReader();
- 3、解析xml 获得 document 对象 Document document = reader.read(url);
猜你喜欢
- 2024-10-17 .NET配置文件大揭秘:轻松读取JSON、XML
- 2024-10-17 [NewLife.XCode]反向工程(自动建表建库大杀器)
- 2024-10-17 Java 使用fastjson将json字符串转为泛型对象
- 2024-10-17 json schema(json schema生成工具)
- 2024-10-17 python 实例分析——发送json数据相关实现技巧
- 2024-10-17 比较一下XML, JSON和YAML(xml数据和json数据)
- 2024-10-17 Protobuf的简单介绍、使用和分析(protobuf的作用)
- 2024-10-17 详解电子表格中的json数据:序列化与反序列化
- 2024-10-17 【Qt教程】使用 QJson 处理 JSON(qt线程使用)
- 2024-10-17 引入 jackson-dataformat-xml 后,默认响应结果是 json 还是 xml?
你 发表评论:
欢迎- 374℃手把手教程「JavaWeb」优雅的SpringMvc+Mybatis整合之路
- 369℃用AI Agent治理微服务的复杂性问题|QCon
- 360℃初次使用IntelliJ IDEA新建Maven项目
- 353℃Maven技术方案最全手册(mavena)
- 351℃安利Touch Bar 专属应用,让闲置的Touch Bar活跃起来!
- 348℃InfoQ 2024 年趋势报告:架构篇(infoq+2024+年趋势报告:架构篇分析)
- 346℃IntelliJ IDEA 2018版本和2022版本创建 Maven 项目对比
- 344℃从头搭建 IntelliJ IDEA 环境(intellij idea建包)
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)