博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XML操作
阅读量:7068 次
发布时间:2019-06-28

本文共 3165 字,大约阅读时间需要 10 分钟。

XML简介

XML是指可扩展标记语言(eXtensible Markup Language),它是一种标记语言,类似HTML。

XML技术除用于保存有关系的数据之外,它还经常用作软件配置文件,以描述程序模块之间的关系

XML结构

文档声明

<?xml version="1.0" encoding="UTF-8" ?>

属性

<天津 id='022'>

注释

<!-- -->

CDATA区 、特殊字符 

<![CDATA[展示的内容]]>

是否独立

* standalone="yes或者no" 代表xml的文件是否是独立的。(如果是no,不独立,可以引入外部的文件)(可选的)

标签

对于XML标签中出现的所有空格和换行,XML解析程序都会当作标签内容进行处理。例如:下面两段内容的意义是不一样的

属性

一个元素可以有多个属性,每个属性都有它自己的名称和取值,例如:<mytag id=“12” …/>

元素中的属性是不允许重复的

转义字符

CDATA区

CDATA是Character Data的缩写

 作用:把标签当做普通文本内容;

 语法:<![CDATA[内容]]>

 例子:

www.itcast.cn]]>以上红色部分被当做普通文本而不是标签

Dom4j解析xml

Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM的人分离出来而后独立开发的。与JDOM不同的是,dom4j使用接口和抽象基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。 

使用Dom4j开发,需下载dom4j相应的jar文件。

Dom4j解析操作

获取xml解析器  SAXReader   saxReader=new SAXReader();获取dom对象   Document doc=saxReader.read(new File(“xml文件路径”));(注意,xml文件路径最好放到项目里面,写路径地址的时候,使用相对地址 ./表示当前项目路径)nodeIterator()   获取当前document或者当前标签的所有子节点(注意:节点包括注释节点(注释节点name为null,值text为注释内容),标签节点,文本节点,属性节点)elements():获取标签下面的所有子标签,返回list的标签集合elementIterator():获取标签下面的所有子标签,返回标签迭代器getRootElement() 获取当前文档的根标签element("标签名字")获取某个标签下面指定名称的第一个标签对象elementText("标签名字")获取某个标签下面指定名称的第一个标签的text内容attribute("属性名称")  获取某个标签的指定名称的属性对象attributeValue("属性名称")  获取某个标签的指定名称的属性对象值

使用Dom4j创建XML

DocumentHelper.createDocument() 创建document文档addElement("Students");   增加指定名称的标签addAttribute("属性名", "属性值") 给标签新增指定的属性名称和属性值nameEle.setText("文本内容"); 给标签设置指定的内容OutputFormat.createPrettyPrint()  指定xml内容输出的文件格式:带有空格和换行,格式美观OutputFormat.createCompactFormat()  指定xml内容输出的文件格式:去掉空格和换行,一般用于正式的服务器上format.setEncoding("utf-8"); //设置xml文件的编码和解析的编码XMLWriter writer=new XMLWriter(outputStream, format);创建xml写入的对象writer.write(doc); 写入document文档

使用dom4j修改xml

attribute.setText("id2");  给属性赋值attribute.setValue("id2"); 给属性赋值  也可以通过增加同名属性的方法,修改属性值element.element("name").setText("ddddd") 给某个标签的文本设置值

使用dom4j删除标签或属性

rmElement.detach()  删除rmElement标签element.remove(rmElement) 删除rmElement标签attribute.detach() 删除attribute属性element.remove(attribute); 删除element属性

DTD

在XML技术里,可以编写一个文档来约束一个XML文档的书写规范,这称之为XML约束。

DTD(Document Type Definition),全称为文档类型定义。

dtd约束引入三种方式

DTD约束即可以作为一个单独的文件编写,也可以在XML文件内编写

使用内部DTD

<!DOCTYPE  根节点  [   DTD的代码  ]>

使用外部DTD

<!DOCTYPE 根元素 SYSTEM “DTD文档路径”>

如:<!DOCTYPE 书架 SYSTEM “book.dtd”>

 使用网络DTD

当引用的DTD文档在公共网络上时,采用如下方式:

 

如:

 DTD约束语法细节

格式

例如:

<!ATTLIST 商品 

类别 CDATA #REQUIRED 必须的

颜色 CDATA #IMPLIED  可选的

>

属性值类型:

CDATA:表示属性的取值为普通的文本字符串

 ENUMERATED (DTD没有此关键字):表示枚举,只能从枚举列表中任选其一,如(鸡肉|牛肉|猪肉|鱼肉)

 ID:表示属性的取值不能重复(不能只写数字)

 设置说明

 

 元素类型

* (#PCDATA) 字符串

* EMPTY 空

* ANY 任意的

* (子元素)

子元素

* , 子元素出现是有顺序的

* | 子元素只能出现一个

* + 子元素出现1次或多次

* * 子元素出现0次或多次

* ? 子元素出现0次或1次

]>
<书架>
<书>
<作者>
zzz
<价格>
123
<类别>
水果
<书>
<作者>
zzz
<价格>
123
<类别>
水果
<书>
<内容>
fasfasdfasf

 

转载于:https://www.cnblogs.com/taozizainali/p/10945455.html

你可能感兴趣的文章
OpenStack入门修炼之nova服务(计算节点)的部署与测试(11)
查看>>
ubuntu安装apache php mysql phpmyadmin
查看>>
漫画: DBA和小D的日常
查看>>
代码 实现UIDatePicker控件 和 Tab Bar 视图切换
查看>>
USB引导盘制作
查看>>
通过自己的项目实际经验,阐述为什么“恶心玩技术”?玩Java技术的教训(一)...
查看>>
蚂蚁分类信息系统 5.8 地区增加多级分类
查看>>
Spring-web源码解析之ContextLoaderListener
查看>>
设计模式--六大原则
查看>>
MONyog监控系统
查看>>
后缀数组 --- HDU 3518 Boring counting
查看>>
让你的虚拟机飞起来--VMware workstaion
查看>>
Yeslab 马老师 V2V环境下vCenter Server Heartbeat v6.4实现vCenter5.0的双机备份
查看>>
一个Demo带你彻底掌握View的滑动冲突
查看>>
ZigBee TI ZStack CC2530 1.1 总体框架
查看>>
Oracle 11g RAC ASM 错误之(1)
查看>>
LoadRunner针对Centos实施监控
查看>>
在CentOS上编译安装Nginx+实验环境搭建+测试
查看>>
RabbitMQ基本功能测试用例(Java实现)
查看>>
Android开发学习笔记:浅谈ListView
查看>>