XML基本语法及解析

XML文件的语法

结果:带关系结果(根节点、子节点)

结构严谨:标签必须成对出现

       如果没有定义名称空间,不能直接冒号<stu:dent></stu:dent>

       标签不能以数字开头,同时不能出现空格

XML文件的属性

使用属性="属性值",可以使用单引号,也可以使用双引号但是不可以既使用单引号又使用双引号

XML文件的注释

<!--                         注释                          -->

XML文件的文档声明

<?xml  version="1.0"  encording="utf-8"  ?>

XML文件的转义字符--同HTML

<:&lt;

>:&gt;

空格:&nbsp;

版本所有:&copy;

注册商品:&reg;

CDATA块:<![CDATA[                       内容              >>              一堆标签进行转义

XML解析

Dom4j:这种方式比较麻烦,需要一层一层遍历

Xpath:用于xml文件结构层次比较深的情况,根据xpath表达式语法,可以快速定位某个标签

SAX解析:基于事件编程

Xpath表达式---常用的

/     :表示绝对路径,在xml文件如果"/"在前面  /contact-list(定位到根节点)        如果斜线在中间   /contatc-list/contact,选中子节点contact

//    :不分层级关系定位所有标签://contact : 不分层级关系选中所有的contact

*     :通配符    /contact-list/*     选中所有contact-list下面的子节点

[ ]   :进一步定义元素,类似于定于    /AAA/BBB[1/last()]

@  :定位属性        @属性名称

=    ://AAA//BBB[@id='属性值']                确定属性值/文本值

逻辑与: and         <contact id ="003"  name="eric">         表达式  //contact[@id='003' and name = 'eric']

text()  ://email[Test()='lisi@163.com']      定位xxx的文本内容是xxx

SAX解析--jdk中扩展java核心类

事件编程三要素:

事件源

事件监听器:

       遇到文档开始处理方法

              遇到开始标签处理方法

              遇到文本内容的时候触发的方法

              遇到结束标签处理方法

       遇到文档结束处理方法

注册事件监听:DefaultHandler:基于事件的处理程序

SAX解析和DOM解析的区别

原理:

DOM:一次性加载整个xml文件,如果xml文件结构层次深,OOM异常,浪费空间

SAX:读取一点,加载一点

使用过程:

DOM:不仅能读,还能修改,并且能往返读

SAX:只能去读

编程思想:

DOM:面向对象编程思想编程方式

SAX:面对事件编程思想编程方式

XML约束

DTD约束

内部约束:

<?xml version="1.0"?>
<!DOCTYPE note [
  <!ELEMENT note (to,from,heading,body)>
  <!ELEMENT to      (#PCDATA)>
  <!ELEMENT from    (#PCDATA)>
  <!ELEMENT heading (#PCDATA)>
  <!ELEMENT body    (#PCDATA)>
]>
<note>
  <to>George</to>
  <from>John</from>
  <heading>Reminder</heading>
  <body>

外部约束:

新建为note.dtd文件

 <!ELEMENT note (to,from,heading,body)>
        <!ELEMENT to      (#PCDATA)>
        <!ELEMENT from    (#PCDATA)>
        <!ELEMENT heading (#PCDATA)>
        <!ELEMENT body    (#PCDATA)>

新建为note.xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
    <to>George</to>
    <from>John</from>
    <heading>Reminder</heading>
    <body>Don't forget the meeting!</body>
</note>

Schema约束

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.w3school.com.cn"
xmlns="http://www.w3school.com.cn"
elementFormDefault="qualified">

<xs:element name="note">
    <xs:complexType>
      <xs:sequence>
	<xs:element name="to" type="xs:string"/>
	<xs:element name="from" type="xs:string"/>
	<xs:element name="heading" type="xs:string"/>
	<xs:element name="body" type="xs:string"/>
      </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>
<?xml version="1.0"?>
<note
xmlns="http://www.w3school.com.cn"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">

<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值