JAVA 笔记-XML(六)

本文涉及的产品
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: JAVA 笔记-XML(六)

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时,有可能会出错。

              <    &lt;

              >     &gt;

              &    &amp;

              '    &apos;

              "     &quot;

         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

             


       

       

       

   

   

             

             

             

                 

             

                 

             

             

             

             

   

相关文章
|
17天前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
17天前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
24天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
27 2
|
17天前
|
Java 数据库连接 编译器
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
Kotlin教程笔记(29) -Kotlin 兼容 Java 遇到的最大的“坑”
34 0
|
1月前
|
安全 Java 编译器
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
Kotlin教程笔记(27) -Kotlin 与 Java 共存(二)
|
1月前
|
Java 开发工具 Android开发
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
Kotlin教程笔记(26) -Kotlin 与 Java 共存(一)
|
1月前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
|
29天前
|
Java 编译器 Android开发
Kotlin教程笔记(28) -Kotlin 与 Java 混编
Kotlin教程笔记(28) -Kotlin 与 Java 混编
12 0
|
2月前
|
Java 编译器 Android开发
Kotlin语法笔记(28) -Kotlin 与 Java 混编
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。对于希望快速学习Kotlin的用户,推荐查看“简洁”系列教程。本文档重点介绍了Kotlin与Java混编的技巧,包括代码转换、类调用、ProGuard问题、Android library开发建议以及在Kotlin和Java之间互相调用的方法。
31 1
|
2月前
|
安全 Java 编译器
Kotlin语法笔记(27) -Kotlin 与 Java 共存(二)
本教程详细讲解Kotlin语法,适合希望深入了解Kotlin的开发者。若需快速入门,建议查阅“简洁”系列教程。本文重点探讨Kotlin与Java共存的高级话题,包括属性访问、空安全、泛型处理、同步机制及SAM转换等,助你在项目中逐步引入Kotlin。
30 1
下一篇
DataWorks