JAVA 笔记-XML(六)

简介: 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

             


       

       

       

   

   

             

             

             

                 

             

                 

             

             

             

             

   

相关文章
|
21天前
|
Java API
Java基础—笔记—API篇
这篇内容介绍了Java中的API相关知识,包括`Object`类作为所有类的父类,其核心方法`toString()`、`equals()`和`clone()`。`toString()`默认返回对象地址,重写后可返回内容;`equals()`默认比较地址,重写后比较内容。`clone()`用于对象克隆,提到了浅克隆与深克隆的概念。此外,还介绍了`Objects`工具类,它提供如`equals()`、`isNull()`和`nonNull()`等方法进行条件判断。
16 0
|
21天前
|
Java Android开发
java利用xml-rpc协议操作wordpress博客
java利用xml-rpc协议操作wordpress博客
16 1
|
4天前
|
XML Java 数据格式
Java一分钟之-JAXB:Java对象到XML绑定
【6月更文挑战第1天】Java Architecture for XML Binding (JAXB) 是Java平台标准,用于自动转换Java对象和XML。它通过注解实现声明式映射,简化XML处理。本文介绍了JAXB的基本使用、常见问题和最佳实践,包括对象到XML(Marshalling)和XML到对象(Unmarshalling)过程,并通过示例展示如何在Java类和XML之间进行转换。注意类型匹配、注解冲突和JAXB上下文创建等问题,以及如何优化性能和避免循环引用。
10 3
|
4天前
|
存储 Java 索引
Java笔记(3)
该文介绍了数据结构的基础知识,包括集合类型和遍历方式。集合分为ArrayList(有序、可重复、有索引)和Set(无序、不重复、无索引)。遍历集合可使用Iterator、增强for循环和Lambda表达式。HashMap是Map接口的实现,用于存储键值对,提供添加、删除、查找等操作。LinkedHashMap保持插入顺序。文章还提及了二叉树的概念,如平衡二叉树和红黑树,并列举了一些常用的Java开发快捷键,以及如何添加依赖。
14 2
|
5天前
|
XML JavaScript Java
Java一分钟之-XML解析:DOM, SAX, StAX
Java中的XML解析包括DOM、SAX和StAX三种方法。DOM将XML加载成内存中的树形结构,适合小文件和需要随意访问的情况,但消耗资源大。SAX是事件驱动的,逐行读取,内存效率高,适用于大型文件,但编程复杂。StAX同样是事件驱动,但允许程序员控制解析流程,低内存占用且更灵活。每种方法都有其特定的易错点和避免策略,选择哪种取决于实际需求。
16 0
|
5天前
|
数据采集 Java API
Java笔记(2)
Java命名规范:包名全小写,类与接口首字母大写驼峰式,枚举同上;方法小写驼峰式,动词开头;变量小写驼峰,常量全大写,下划线分隔;参数和局部变量同变量规则;布尔变量避免简单is或has开头。Java调试用jps、jhsdb、javap。常用API包括Math(如abs、ceil)、System(如exit、arraycopy)、Runtime(如getRuntime、exec)、Object(如toString、equals)、BigInteger(大整数操作)、正则表达式、日期处理和Collections(如addAll、shuffle)。
12 0
|
5天前
|
设计模式 Java C++
Java笔记
Java基础易错点: equals与==区别,构造函数,访问修饰符,Object是所有类的父类,空指针异常。入门涉及Scanner输入,字符串处理,静态与非静态,类型转换,面向对象涵盖可变参数,内部类,JavaBean,重载,封装,继承,接口,多态,强转和泛型。注意静态方法不能调用非静态成员,可变参数本质是数组,泛型不具继承性。
8 0
|
21天前
|
XML JavaScript Java
详解Java解析XML的四种方法
详解Java解析XML的四种方法
20 1
|
21天前
|
Java Spring
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 报错的解决办法
java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter 报错的解决办法
28 0
|
21天前
|
XML JavaScript Java
掌握XML解析:深入比较Java中的四种解析方式
掌握XML解析:深入比较Java中的四种解析方式
127 0