Java中XML重点总结

XML简介:

XML(EXtensible Markup Language),可扩展标记语言

特点:

  1. XML与操作系统、编程语言的开发平台都无关【通用的数据交换格式】
  2. 实现不同系统之间的数据交换【包括系统的配置文件】
  3. 是一种标记语言,没有固定的标记,可以随便发明也可以自己创建

【整个XML是一种树形文件】

  1. 是其他技术的基础技术

作用:

  1. 数据交互
  2. 配置应用程序和网站
  3. Ajax基石

XML文档结构:

<?xml version="1.0" encoding="UTF-8"?>     【声明部分(位于第一行);这个是满足xml 1.0标准的】

【底下的都是:文档元素描述信息(文档结构),所有带尖括号的都叫标签,也叫元素,都是用树形文件写出来的】

<books>    【根元素,每个XML文件的根元素有且仅有一个】

    <!--图书信息 -->       【XML中的注释语法:<!--……-->】

    <book id="bk101">     【books的子元素,包含关系的元素要用缩进来体现】

        <author>王珊</author>     【book的子元素】

        <title>.NET高级编程</title>   【就像以前的类和属性】

        <description>包含C#框架和网络编程等</description>

    </book>

    <book id="bk102">    【books的子元素】

        <author>李明明</author>

        <title>XML基础编程</title>

        <description>包含XML基础概念和基本作用</description>

    </book>

</books>    【根元素</……>是结束的符号】

【数据库,Java文件,XML文档应当全部一致】

XML文档内容由一系列标签元素组成

<元素名 属性名=“属性值”>元素内容</元素名>

空元素的方法:

<name>(这里是一个空格)</name>

<name></name>

<name/>

语法:

  1. 属性值用双引号包裹
  2. 一个元素可以有多个属性
  3. 属性值中不能直接包含<、“、&(不建议:、>)【最好都不要写

例如:

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

<students>

       <!-- 学生信息 -->

       <student id="s1">

              <name>张三</name>

              <age>18</age>

       </student>

       <student id="s2">

              <name>李四</name>

              <age>22</age>

       </student>

       <!-- 这两种写法都可以,但是第一种用的居多 -->

       <student id="s1"name="张三"age="18"/>

       <student id="s2"name="李四"age="22"/>      

</students>

XML编写注意事项:

  1. 所有XML元素都必须有结束标签(</……>)
  2. XML标签对大小写敏感
  3. XML必须正确的嵌套
  4. 同级标签以缩进对齐
  5. 元素名称可以包含字母、数字或其他的字符
  6. 元素名称不能以数字或者标点符号开始(<5name>是错误的;<name5>是正确的)
  7. 元素名称中不能含空格(<student name>是错误的;<studentname>是正确的的)

推荐的XML编写命名习惯:

  1. 编写的元素名称要有描述性。
  2. 名字尽量简短些,可以用下划线“_”,但是不要用中横线“-”、点“.”或者冒号“:”(<book_title>)。
  3. 数据库怎么命名,XML文件就怎么命名,要保持一致。

指出下面XML代码的错误:

<title><name>XML编程</title></name>

嵌套错误,应该是:

<title><name>XML编程</name></title>

 

XML中的转义符列表:

符号

转义符(预定义实体)

<

&lt;

>

&gt;

"

&quot;

'

&apos;

&

&amp;

当元素中出现很多特殊字符时,可以使用CDATA节,如:

<description><![CDATA[讲解了元素<title>以及</title>的使用]]>

等同于:

<description><讲解了元素&lt;title&gt;以及&lt;/title&gt;的使用> </description>

 

XML命名空间(类似于Java中的包):

W3CSCHOOL中有XML的帮助文档;例如:http://www.w3school.com.cn/xml/xml_namespaces.asp

XML命名空间的作用

避免命名冲突

解决方法:

  1. 使用前缀来避免

例如:

此文档带有某个表格中的信息:

<h:table>

   <h:tr>

   <h:td>Apples</h:td>

   <h:td>Bananas</h:td>

   </h:tr>

</h:table>


此 XML 文档携带着有关一件家具的信息:

<f:table>

   <f:name>African Coffee Table</f:name>

   <f:width>80</f:width>

   <f:length>120</f:length>

</f:table>

现在,命名冲突不存在了,这是由于两个文档都使用了不同的名称来命名它们的 <table> 元素 (<h:table> 和 <f:table>)。

通过使用前缀,我们创建了两种不同类型的 <table> 元素。

  1. 使用命名空间(Namespaces)

例如:

这个 XML 文档携带着某个表格中的信息:

<h:table xmlns:h="http://www.w3.org/TR/html4/">

   <h:tr>

   <h:td>Apples</h:td>

   <h:td>Bananas</h:td>

   </h:tr>

</h:table>

此 XML 文档携带着有关一件家具的信息:

<f:table xmlns:f="http://www.w3school.com.cn/furniture">

   <f:name>African Coffee Table</f:name>

   <f:width>80</f:width>

   <f:length>120</f:length>

</f:table>

与仅仅使用前缀不同,我们为 <table> 标签添加了一个xmlns属性,里面的网址是统一资源标识符,目的是唯一标识一个命名空间,每一个统一资源标识符都是不一样的,但是没有实际意义,但是一般都能连到一个网页,取值这样就为前缀赋予了一个与某个命名空间相关联的限定名称。

 

XML解析器:

  1. 非验证解析器【检查文档格式是否良好,不能验证是够有效】
  2. 验证解析器【使用DTD(Document Type Define是一种验证机制)检查文档的有效性】

 

解析XML技术:

DOM:

  1. 基于XML文档树结构的解析(解析成DOM树放内存里)
  2. 适用于多次访问的XML文档

特点:比较消耗资源

SAX:

  1. 基于事件的解析
  2. 适用于大数据量的XML文档

特点:占用资源少,内存消耗小

DOM4J(把DOM解析进行了一次封装,应用更多):

  1. 非常优秀的Java XML API
  2. 性能优异、功能强大
  3. 开放源代码

 

DOM解析XML:

DOM介绍

  1. 文档对象模型(Document Object Model)
  2. DOM把XML文档映射成一个倒挂的树

 

示例:

<book id=”1234”>

    <title>三国演义</title>

    <author>罗贯中</author>

    <price>30元</price>

</book>

 

其中所有带尖括号的叫元素节点,只有文本文字的叫属性节点,id=”1234”叫做属性节点

变成:

更易于增删改查的应用

 

常用接口介绍:

DOM解析包:org.w3c.dom

常用接口

常用方法

说明

Document:表示整个 XML 文档

NodeList   getElementsByTagName(String Tag)

按文档顺序返回文档中指定标记名称的所有元素集合

Element   createElement(String tagName)

创建指定标记名称的元素

Node:该文档树中的单个节点

NodeList   getChildNodes()

获取该元素的所有子节点,返回节点集合

Element:XML 文档中的一个元素(是一种特殊的Node)

String   getTagName()

获取元素名称

 

DOM解析XML文件步骤:

  1. 创建解析器工厂对象
  2. 解析器工厂对象创建解析器对象
  3. 解析器对象指定XML文件创建Document对象
  4. 以Document对象为起点操作DOM树

 

DOM4J:

开源,易用,应用于Java平台上的一种解析XML的技术,提供第三方的jar包使用了大量的接口。

其中:

Document:定义XML文档(和DOM一样)

Element:定义XML元素

Text:定义XML文本节点

Attribute:定义了XML 的属性

 

第一步:拖进来jar包选择build path之后add build path,就会变成奶瓶。

然后再写开始初始化信息:

public Document parse(String url) throws DocumentException {
    SAXReader reader = new SAXReader();
    Document document = reader.read(url);
    return document;     

解析文件:

try {
    parse("animals.xml");
} catch (DocumentException e) {
    System.out.println("文件找不到");
}

对文件进行操作:

//先得到根节点
Element root=doc.getRootElement();
//遍历根元素的所有子节点
Iterator it= root.elementIterator();
while(it.hasNext()){
    //得到每个user的所有子节点
    Element user=(Element)it.next();
    //其他操作
    String XXX=user.getText();//得到子节点的文本
    String XXX=user.attributeValue("id");//得到子节点的属性
    user.addElement("name").addText(name);//给子节点添加文本
    user.addAttribute("id", id);//添加属性
    root.remove(user);//删除节点
}

总结:

主要内容:

  1. XML语言简介
  2. XML文档编写规范
  3. 什么是DOM解析XML
  4. DOM解析XML的方法
  5. DOM4J解析XML的方法

猜你喜欢

转载自blog.csdn.net/baidu_29343517/article/details/81609732