网站首页 > java教程 正文
1、XML(Xtensible markup language可扩展的标记 语言)是什么
(1) 是一种基于文本的通用的数据保存的格式。
a,通用: 即以XML格式保存的数据,可以被其它任何的程序来处理 。
比如:一个点,在java语言里面,可以用一个类Point表示:
Class Point{
int x;
int y;
...
}
那么,一个Point对象要保存下来,可以使用如下几种方式:
方式一: 序列化 (不通用,因为序列化是java语言特有的)。
方式二:数据库(通用)
方式三:自定义一个协议(比如,将数据保存在一个文件里面(10,20),很显示,不通用。
方式四:使用XML
<point>
<x>10</x>
<y>20</y>
</point>
b,格式
一对标记加上相应的内容(内容可以是普通的文本,也可以是标记),另外,标记还可以有属性。
c,历史
html: 博纳斯.李 1990年发明的(李也是万维网联盟的创建者,互联网之父)。
<html>
<head></head>
<body>hello kitty</body>
</html>
html --- >xhtml (使用XML语法来重新定义html的结构)
XML采用了与html相似的语法,但是,XML是可扩展的,即可以自定义任意标记。
2、XML的基本语法
(1)元素
标记以及标记之间的内容统称为元素 ,比如
<point>
<x>10</x>
<y>20</y>
</point>
(2)每一个xml文档, 只允许有一个根元素
(3) 元素可以为空 ,称之为空元素,比如 <point></point>,空元素也可以简化为<point/>
(4) 元素可以有属性 ,属性值必须用引号括起来,比如
<point type="AA">
<x>10</x>
</point>
注意:属性必须要放在开始标记里面。
(5) 元素可以嵌套
<a>
<b></b>
</a>
(6) 大小写敏感
<A>
</a> error!
(7) 实体
<question>
1+1<2?
</question>
一些特殊的字符,比如<,>,&,'," 需要使用相应的实体来代替。如果不代替,解析器在解析xml时,有可能会出错。
< <
> >
& &
' '
" "
(8) CDATA段
<![CDATA[ 不希望解析器解析的内容 ]]>
3、XML的解析
(1) 常见的解析方式
a, SAX (Simple API for XML),基于事件处理机制,边读取XML文件,边解析,对内存的要求不高,速度也比较快。其它的一些解析工具( DOM4J )会使用SAX作为底层的解析器。
另外,一些内存容器比较小的场合,比如手机系统,可以使用SAX。
b, DOM (Document Object Model),将整个XML文件读入到内存,生成一棵树,然后对棵进行操作。用得少。
c, DOM4J /JDOM
(2) Object --- >XML
step1,先设计好xml文档的结构
<order>
<type>VIP</type>
<cust-name>范伟</cust-name>
<flight>CA1748</flight>
<time>8:00 am</time>
<dest>上海</dest>
</order>
也可以
<order type="VIP">
<cust-name>范伟</cust-name>
<flight>CA1748</flight>
<time>8:00 am</time>
<dest>上海</dest>
</order>
step2, 在内存当中创建一个Document 对象(一棵树,根是order)。
step3, 输出
4、XML的设计(DTD Document type definition文档类型定义)
(1)DTD是什么?
定义了 xml文档的结构( 定义了一个xml文档里面根元素是什么,可以出现哪些子元素,哪些属性等等)。
(2)DTD文档的基本结构
<!DOCTYPE 根元素[
<!ELEMENT 根元素 (子元素的名称)>
<!ELEMENT 子元素 (内容描述)>
...
<!ATTLIST 元素 属性名称 CDATA #REQUIRED>
]>
(3)DTD作用
a, 定义xml文档的结构 :有了DTD,就必须按照DTD的要求来写xml文档。
b, 对xml文档的正确性进行验证,如果xml文档没有按照DTD的要求进行编写,则解析器解析时会提示错误 。
一个xml文档符合xml的基本语法,称这个xml文档是正确的,如果这个xml文档还符合DTD文档的要求,则认为这个xml文档是有效的。
5、XPATH
(1)XPATH是什么?
可以将xml看成是数据库,那么XPATH就是sql语句 。
(2)使用XPATH
DOM4j已经实现了XPATH规范。可以使用Document.selectNodes(XPATH语句);
比如:
selectNodes("/orders/order/time");
又比如:
selectNodes("/orders/order[1]/time");
[]里面可以用数字(从1开始)来指定是第几个元素。
又比如:
selectNodes("/orders/order[@type='vvip']/time");
@type='vvip' 指定该元素的属性值必须是vvip
猜你喜欢
- 2024-10-17 Qt开发-DOM方式解析XML(qt开发工具)
- 2024-10-17 作为一名程序猿,你不可不知的Java基础知识的三十个经典问答
- 2024-10-17 Android中XML文件解析,现在了解还不晚
- 2024-10-17 JSP 标准标签库(JSTL)(jsp标签库有哪些)
- 2024-10-17 Spring源码阅读:Spring XML解析机制
- 2024-10-17 XML文件(xml文件怎么打开)
- 2024-10-17 Python如何解析HTML和XML数据(python解析html xml最好的模块)
- 2024-10-17 深入解析Python中的XML处理:理论与实践的结合
- 2024-10-17 XML的解析方式(xml的解析方式有哪些)
- 2024-10-17 C++解析XML文件(c++ xml文件读写)
你 发表评论:
欢迎- 05-15java使用iText解析PDF文件
- 05-15java 将pdf 形成的图片,每页一张图片 保存为pdf文件
- 05-15Java学习123——虚拟方法调用(Virtual Method Invocation)
- 05-15什么是JNI?为什么会有Native层?如何使用?
- 05-15Socket通信
- 05-15译文:理解Java中的弱引用
- 05-15Java 调用 DeepSeek 模型的完整示例及特点
- 05-15Java 对象和类
- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)