XMLday01

XML

可扩展标记语言

特性:

1.是一门独立的标记语言

2.具有平台无关性

3.具有自我描述性

用途

1.网络数据的传输

2.数据存储

3.配置文件

XML语法格式

XML文档通常存储在.xml文件中

语法结构

​ 1.文档声明

​ <?xml Version = "1.0" encoding = "UTF-8"?>

​ 2.标记(元素 / 标签 / 元素)

​ xml文档,由一个个的标记组成.

​ 语法

​ 开始标记:<元素名称>

​ 结束标记:</元素名称>

​ 标记名称:标记名称是自定义的,命名规则参考java的标识符命名规则

​ 标记内容:开始标记与结束标记之间是标记的内容部分.

​ 例如:

​ 描述一个姓名:张三

​ 3.标记之间可以嵌套,但不可以交叉

​ 正例:

​ 反例:

​ 4.一个XML文档有且仅允许存在一个跟标记

​ 5.标记的嵌套关系(字标记,父标记,兄弟标记,后代标记,祖先标记)

​ 6.标记名称允许重复

​ 7.标记的属性

​ 标记中存在属性,在开始标记位置,编写属性列表

​ 格式:属性由属性名和属性值组成

​ 属性名与属性值之间用 等号连接,属性值由双引号引住

​ 多个属性之间用空白符隔开.

​ 例如:

​ 张三

​ 8.注释

​ 注释开始:<!–

​ 注释结束:–>

案例:

描述一组学生, 存储到一个students.xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<students>
    <student id="1001">
        <name>小泽马</name>
        <age>18</age>
    </student>
    <student id="1002">
        <name>加藤马</name>
        <age>19</age>
    </student>
    <student id="1003">
        <name>仓井马</name>
        <age>20</age>
    </student>
</students>

练习

books.xml
描述一组图书 books . books中至少包含三本图书book
book中包含子节点:
    -   图书名称:name
    -   图书信息:info
book中包含属性:id

<?xml version="1.0" encoding="UTF-8"?>
<books>
    <book id="1001">
        <name>金苹果</name>
        <info>讲述了果农辛勤劳动, 种出金色苹果的童话故事.</info>
    </book>
    <book id="1002">
        <name>银苹果</name>
        <info>讲述了果农辛勤劳动, 种出银色苹果的童话故事.</info>
    </book>
    <book id="1003">
        <name>铜苹果</name>
        <info>讲述了果农辛勤劳动, 种出铜色苹果的童话故事.</info>
    </book>
</books>

Java解析XML文档

面试题

问:java中有几种xml文件解析方式?分别是什么?有什么有缺点?

答:两种 或 四种

1.SAX解析

​ 是事件驱动机制的解析方式.

​ 采用逐行读取的方式解析XML,每当读取到一个标记的开始/结束/内容时,触发程序员事先准备好的处理代码,进行处理.

​ 优点:在读取大文件时,节省内存

​ 缺点:

​ 1.因为逐行解析,当解析第N行时,第N+1行的数据已经被释放了

​ 2.因为事件驱动机制,无法告知程序员节点层次

​ 3.sax解析是只读解析,无法修改文档内容.

2.DOM解析

​ 直接将整个文档,加载到内存,在内存中建立文档树模型(树对象)

	通过操作文档树。来完成数据的修改 获取和删除

​ 优点:文档一次性加载到内存,可以进行任意的读取 修改和删除。

​ 缺点:文档一次性加载到内存,浪费大量内存,如果文件较大,可能文法解析

3.JDOM解析

​ 是DOM解析的扩张,,与DOM解析的优缺点几乎一致

4.DOM4J解析

​ 是DOM解析的扩张,,与DOM解析的优缺点几乎一致

DOM4J解析XML方式

步骤:

1.引入jar文件(dom4j.jar)

2.创建一个输入流,指向一个xml文件

​ FileInputStream fis = new FileInputStream(“文件的地址”);

3.创建一个XML文件读取工具对象

​ SAXReader sr = new SAXReader();

4.通过读取工具对象,读取xml文档输入流,并得到返回值(返回的是读取到的文档对象)

​ Document doc = sr.read(fis);

5.通过文档对象,获取xml文档中的跟元素对象

​ Element root = doc.getRootElement();

元素对象Element的常用方法

1.获取节点名称

​ String name = element.getName();

2.获取节点内容

​ String text = element.getText();

3.设置节点内容

​ element.setText(String text);

4.根据子节点名称,获取匹配名称的第一个子节点

​ Element e = element.element(“节点名称”);

5.获取所有子节点对象

​ List list = element.elements();

6.获取节点属性值

​ String value = element.attributeValue(String 属性值);

7.获取子节点内容

​ String text = element.elementText(String 节点名称);

8.添加子节点

​ Element e = element.addElement(String 子节点名称);

9.添加属性

​ element.AddAttribute(String 属性名,String 属性值);

XML文档的生成

步骤:

1.通过文档帮助器(DocumentHelper)创建空的文档对象

​ Document doc= DocumentHelper.createDocument();

2.通过文档对象。添加跟节点

​ Element root = doc.addElement(“跟节点名称”);

3.通过根节点丰富文档内容

4.创建一个文件输出流,用于存储xml文件

​ FlieOutputStream fos = new FileOutputStream(“要存储文件的路径”);

5.将文件输出流转换为xml文件输出流

​ XMLWrite xw = new XMLWrite(fos);

6.将文档输出到文件中

​ xw.write(doc);

7.释放资源

​ xw.close();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值