http://www.cnblogs.com/wang-meng/p/5374498.html

1,XML基础介绍
  xml的概念:
    XML 指可扩展标记语言(EXtensible Markup Language),也是一种标记语言,很类似 HTML。
           它的设计宗旨是传输数据,而非显示数据它;标签没有被预定义,需要自行定义标签。
  xml的作用:
    XML 是各种应用程序之间进行数据传输的最常用的工具,并且在信息存储和描述领域变得越来越流行。简单的说,我们在开发中使用XML主要有以下两方面应用.
           a.XML做为数据交换的载体,用于数据的存储与传输
    b.XML做为配置文件

2,书写规范

  注意事项:

            xml必须有根元素(只有一个)
    xml标签必须有关闭标签
    xml标签对大小写敏感
    xml的属性值须加引号
    特殊字符必须转义
    xml中的标签名不能有空格,不能以数字或"_" (下划线)开头,
不能以xml(或XML、或Xml 等)开头,名称中间不能包含冒号(:)
(有特殊用途)
空格/回车/制表符在xml中都是文本节点
xml必须正确地嵌套

3.xml的约束

xml的约束:
作用:明确的告诉我们那些元素和属性可以写,以及他们的顺序如何.
分类:DTD约束和SCHEMA约束
要求:给你xml约束你可以写出对应的xml文档即可.
1, DTD约束:struts hibernate中有使用
与xml文档的关联:
 方式1:内部关联
格式:<!DOCTYPE 根元素名称 [dtd的语法]> 方式2:外部关联--系统关联
格式:<!DOCTYPE 根元素名称 SYSTEM "dtd路径">
dtd的后缀名是 .dtd
方式3:外部关联--公共关联
格式:<!DOCTYPE 根元素名称 PUBLIC "dtd的名称" "dtd路径"> 元素:
格式1:<!ELEMENT 元素的名称 (内容)>
格式2:<!ELEMENT 元素的名称 类别>
属性:
格式:<!ATTLIST 元素的名称 属性的名称 类型 默认值>
属性的类型:
ID:唯一
CDATA:文本
默认值:
REQUIRED:必须出现
IMPLIED:可以选择
类别:
#PCDATA:文本是一个字符串,不能出现子元素 ,用的时候用(#PCDATA)
符号:
+ >=1
? 0|1
* 任意值
| 选择
() 分组
, 顺序

  

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE bookstore[
<!ELEMENT bookstore (book+)>
<!ELEMENT book (title,author,year,price)>
<!ELEMENT title (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT year (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ATTLIST book category CDATA #REQUIRED>
<!ATTLIST title lang CDATA #IMPLIED>
]>
<bookstore>
<book category="COOKING" >
<title lang="en" >Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="CHILDREN">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>

    2,SCHEMA约束:spring中使用的就是schema约束
            作用:用来替代dtd的,多个schema可以出现一个xml文档上
            需求:    
                xml 文档中出现了<table>
                a约束上的---table :桌子 属性  height width
                b约束上的---table :表格 属性  rows  cols
            名称空间:
                作用:用来确定标签的约束来自于那个约束文档上
                格式:
                    方式1:xmlns="名称"
                    方式2:xmlns:别名="名称"
                例如:
                    table  代表的是桌子
                    b:table 代表的就是表格  
            schema的语法:
                后缀名.xsd
                关联

    

1.约束文件的关联 bookstore.xsd
xmlns="http://www.w3.org/2001/XMLSchema"-- 固定值,自定义的约束文件可以出现那些标签
targetNamespace="http://www.example.org/bookstore"
给当前的xsd起个名称空间,方便目标xml文件引用,名字可以随便起,一般使用域名/自定义名称既可以 例如: targetNamespace="bookstore"
targetNamespace="http://www.augmentum.com/bookstore" 确定一个目标xml根元素
<element name="bookstore"></element> 2.xml文件的关联
写根标签
添加schema约束
1.xmlns="约束的名称空间" -- 值为xsd文件上的targetNamespace的内容
例如:
xmlns=="http://www.augmentum.com/bookstore" 2.xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" :固定的写法 声明此文档是一个
            被schema约束的文件
3.确定文档的位置
xsi:schemaLocation="{和xsd文件中的targetNamespace} {xsd文件的路径}"
关联小结:
先有约束文件. .xsd
targetNamespace 就是给当前的约束文件起个名字,方便xml使用
必须确定根元素
后有xml文件.
写根元素
添加约束
xmlns="名字" 他的值为targetNamespace中起的名称
xsi:schemaLocation="名字 位置"
语法:
1.确定根元素
<element name >
name:元素的名称
type:元素的数据类型
2.确定元素类型
复杂的元素
<complexType>
简单的元素 -- 几乎看不见
<simpleType>
3.确定顺序:
<sequence maxOccurs="3"> 按次序 相当于 dtd 中,
<all> 随意
<choice> 或 相当于dtd中的 | maxOccurs 最大的出现次数 值为unbounded指的是无上限
minOccurs 最小的出现次数
4.确定属性
<attribute name="category" type="string" use="required" />
name :属性的名称
type:属性的数据类型
use 相当于dtd中 默认值
值为required:必须出现
值为optional:可选 5.若有属性的元素,内容只是文本
<complexType> --- 指定元素为复杂类型
<simpleContent>--- 指定元素是一个简单的内容,只有文本
<extension base="string"> -- 文本内容进行扩展
<attribute name="lang" type="string" /> -- 添加属性
</extension>
</simpleContent>
</complexType>

  Schema约束示例:

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="aaa"
xmlns:tns="http://www.example.org/bookstore"
elementFormDefault="qualified">
<element name="bookstore" >
<!--
1.确定根元素
<element name >
name:元素的名称
type:元素的数据类型
2.确定元素类型
复杂的元素
<complexType>
简单的元素 -- 几乎看不见
<simpleType>
3.确定顺序:
<sequence maxOccurs="3"> 按次序 相当于 dtd 中,
<all> 随意
<choice> 或 相当于dtd中的 | maxOccurs 最大的出现次数 值为unbounded指的是无上限
minOccurs 最小的出现次数
4.确定属性
<attribute name="category" type="string" use="required" />
name :属性的名称
type:属性的数据类型
use 相当于dtd中 默认值
值为required:必须出现
值为optional:可选
--> <complexType>
<sequence maxOccurs="unbounded" minOccurs="1">
<element name="book">
<complexType>
<sequence>
<element name="title"> </element>
<element name="author" type="string" />
<element name="year" type="date" />
<element name="price" type="double" />
</sequence>
<attribute name="category" type="string" use="optional" />
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema> bookstore.xsd

  

<?xml version="1.0" encoding="UTF-8"?>
<bookstore xmlns="aaa"
xsi:schemaLocation="aaa bookstore.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
</bookstore>

  

4.解析xml

解析xml种类:
    解析xml文件,解析xml格式的字符串
 获取xml中的内容
    解析方式:SAX ,DOM4J ,JDOM
    区别:
    sax:逐行的解析,不能增删改
    dom:把整个文档加载到内存中,翻译成一棵树,就可以进行crud操作

         JDOM 在性能测试时表现不佳,在测试 10M 文档时内存溢出。在小文档情况下还值得考虑使用 JDOM

        如果不考虑可移植性,那就采用DOM4J吧!
  要求:
    会查询(获取)
    DOM4J的解析(只需会查询操作)

xml规范及xml解析的更多相关文章

  1. 10分钟掌握XML、JSON及其解析

    引言 NOKIA 有句著名的广告语:“科技以人为本”.任何技术都是为了满足人的生产生活需要而产生的.具体到小小的一个手机,里面蕴含的技术也是浩如烟海,是几千年来人类科技的结晶,单个人穷其一生也未必能掌 ...

  2. xml 的使用和解析 及解析工具

    xml 一.xml简介 1. 什么是xml XML:Extensiable Markup Language,可扩展标记语言.和HTML有语法相似之处,也有作用上的不同: 和html相似: 都是由一堆标 ...

  3. XML的四种解析器(dom_sax_jdom_dom4j)原理及性能比较[收藏]

    1)DOM(JAXP Crimson解析器)    DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特定 ...

  4. XML.03-DOM和SAX解析

    body,td { font-family: calibri; font-size: 10pt } XML.03-DOM和SAX解析 XML的DOM解析 解析 处理 回写 XML的SAX解析 SAX和 ...

  5. 在Salesforce中处理Xml的生成与解析

    在Salesforce中处理Xml的生成与解析 1): Generate Xml private String ConvertAccountToXmlInfo(Account acc){ Dom.Do ...

  6. JS解析XML文件和XML字符串

    JS解析XML文件 <script type='text/javascript'> loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览 ...

  7. xml中俩种解析方式

    两种解析方式 1.from xml.etree import ElementTree as ET 利用ElementTree模块下的xml方法可以把一个字符串类型的东西转换成Element类,从而利用 ...

  8. python 解析XML python模块xml.dom解析xml实例代码

    分享下python中使用模块xml.dom解析xml文件的实例代码,学习下python解析xml文件的方法. 原文转自:http://www.jbxue.com/article/16587.html ...

  9. iOS高级编程之XML,JSON数据解析

    解析的基本概念 所谓“解析”:从事先规定好的格式串中提取数据 解析的前提:提前约定好格式.数据提供方按照格式提供数据.数据获取方按照格式获取数据 iOS开发常见的解析:XML解析.JSON解析 一.X ...

随机推荐

  1. VS2010提示error TRK0002: Failed to execute command解决方法

    昨天windows8自动更新Microsoft .NET Framework 3.5和4.5.1安全更新程序,今天用VS2010编译时提示如下错误信息 TRACKER : error TRK0002: ...

  2. 批量修改Sqlserver中数据库对象的所属架构

    执行以下SQL,将执行结果拷贝出来,批量执行既可. SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + p.Name FROM sys.Proce ...

  3. [dts]Device Tree格式解析

    转自:http://blog.csdn.net/airk000/article/details/21345159 目录: 1. 作用 2. 基本数据格式 3. 一些基本概念 4. 工作方式 a. 地址 ...

  4. C# is和as操作符

    is和as操作符 is操作符:检查对象是否与给定类型兼容. 说明: 1.如果所提供的表达式非空,并且所提供的对象可以强制转换为所提供的类型而不会导致引发异常,则 is 表达式的计算结果将是 true, ...

  5. C#应用程序单进程检测

    以下程序经过VS2010测试通过: /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] static void Ma ...

  6. (C#) Action, Func, Predicate 等泛型委托

    (转载网络文章) (1). delegate delegate我们常用到的一种声明   Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型.   例:public del ...

  7. Servlet间的跳转

       Forward        转向(Forward)是通过RequestDispatcher对象的forward(HTTPServletRequest req, HttpSerletRespon ...

  8. 25 个超棒的 HTML5 & JavaScript 游戏引擎开发库

    就像在汽车中,引擎完成主要的工作,使汽车看起来不可思议.游戏引擎同理,游戏开发者完成细节的工作,使游戏看起来真实.吸引人眼球.游戏引擎负责其余的事情.早期,游戏开发者通常从草图做起,花费高昂,且不容易 ...

  9. PLSQL_Oracle簇表和簇表管理Index clustered tables(案例)

    2012-06-08 Created By BaoXinjian

  10. lower_bound实现函数

    lower_bound实现 [参考链接]lower_bound二分的三种写法 我在以前,总是用lower_bound,现在发现这样不行,有些复杂的数据结构二分的时候用这个会很麻烦,不如手写二分,我接着 ...