Java XML[可扩展标记语言]

XML

1.Xml

    可扩展标记语言 Extensible Markup Language

   可以用简单标记的描述数据。

2.XML优势和作用

   优势: 跨平台、可扩展性、可读性、简单、内容和形式分离。

   作用: 配置文件存储数据、数据交换

3. XML文件组成

   1.1 xml 头信息:声明版本和编码

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

   1.2 xml 标签元素

      <标签名  属性名=”值”> 内容 </标签名>

      xml标签名可以自定义

4.格式良好xml遵循的规则

   1. Xml声明必须放在第一行。

   2.根元素标签有且只能有一个。

   3.标签必须成对出现。

   4.严格区分大小写。

   5.属性值必须用””引起来

   6.标签必须正确嵌套

   编写一个存储学生信息的students.xml

<?xml version="1.0" encoding="UTF-8" ?>
<students>
  <student sno="1001">
    <name>小博</name>
    <age>18</age>
    <sex>男</sex>
  </student>
  <student sno="1002">
     <name>马总</name>
     <age>28</age>
     <sex>女</sex>
  </student>
</students>

  注意:students.xml只是一个格式良好xml,但不是一个有效xml.

      有效:xml只能存放student有关的一些标签

5.有效xml文件

   1. 格式良好

   2. 使用DTD 或 XSD 添加语义约束

6.DTD  文档类型定义

  作用:给xml添加约束,保证xml格式正确性

  1. 内部DTD语法

<!DOCTYPE  根元素[

   //元素中包含子元素  +:1~n   ?:0~1  *:0~n

   <!ELEMENT 元素(子元素+?*,子元素...)>

   //元素中包含属性 ,CDATA:字符串类型   #REQUIRED:必须的  

   <!ATTLIST 元素 属性名 CDATA  #REQUIRED>

   //元素中包含内容

   <!ELEMENT 元素 (#PCDATA)>

]>

  2. 外部DTD

     1. 创建dtd文件,编写约束

   //元素中包含子元素

   <!ELEMENT 元素(子元素+?*,子元素...)>

   //元素中包含属性 ,CDATA:字符串类型   #REQUIRED:必须的  

   <!ATTLIST 元素 属性名 CDATA  #REQUIRED>

   //元素中包含内容

   <!ELEMENT 元素 (#PCDATA)>

2. DTD文件引入到xml中

     <!DOCTYPE 根元素  SYSTEM ‘xxx.DTD’>

7.XML解析

前两种属于基础方法,是官方提供的平台无关的解析方式

后两种属于扩展方法,是在基础方法上扩展出来的,只适用Java平台

8.DOM4J方式解析XML文件

   1. 引入dom4j.jar包

      dom4j-1.6.1.jar

   2. 创建解析器对象SaxReader

     SAXReader sr=new SAXReader();

   3. 读取xml文件,解析成DOM树

      Document doc=sr.read("students.xml");

   4. 获取根元素

      Element root=doc.getRootElement();

   5. 元素常用的方法

方法名

描述

getName()

获取元素的名称

elements()

获取所有的子元素

element(String name)

获取指定的子元素

attributeValue(String name)

获取元素指定的属性值

elementText(String name)

获取子元素的文本值

addElement()

添加子元素

addAttribute()

添加属性

addText()

添加文本

9.修改xml文件,重新Document对象写到xml中

OutputFormat format=OutputFormat.createPrettyPrint();
XMLWriter xw=new XMLWriter(new FileOutputStream("students.xml"),format);
xw.write(doc);
xw.close();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值