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必须正确地嵌套             

View Code

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.xsdxmlns="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文件的路径}"关联小结:先有约束文件. .xsdtargetNamespace 就是给当前的约束文件起个名字,方便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的解析(只需会查询操作)

转载于:https://www.cnblogs.com/liqun-12345/p/5883664.html

xml规范及xml解析相关推荐

  1. php xml 四种,xml中常见的四种解析方式是什么?

    xml解析方式有:1.DOM解析方法,可以对xml文档进行修改操作:2.SAX解析方法,解析速度快,占用内存少:3.JDOM解析方法,查找方便:4.DOM4J解析方法,解析XML的速度快. 在XML的 ...

  2. XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较

    6月20日 XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较  1:DOM     DOM 是用与平台和语言无关的方式表示 XML 文档的官方 W3C 标准.DOM 是以层次结 ...

  3. 使用dom4j来解析xml文件或xml字符串

    现有一个配置文件,需要解析出根节点与子节点,还有子节点下属性的信息.虽然w3c.dom规范亦可以解析,但这儿我们尝试使用dom4j的方式来解析. 涉及到的jar包有dom4j-1.6.1.jar xm ...

  4. Java基础加强重温_13:XML(可拓展标记语言)、XML语法、XML约束、XML解析(Dom4j,JAXP)、Dom4j基本使用、Xpath表达式(XML路径语言)、XML解析综合案例

    摘要 Java基础加强重温_13: XML(可拓展标记语言.作用:小型数据库.框架配置文件.不同平台数据交换). XML语法(文档.标签/元素.属性.注释.转义字符.CDTA区) XML约束(DTD约 ...

  5. XML及使用dom4j解析XML

    XML(Extensible Markup Language)表示可扩展的标记语言 XML的标签没有被预定义,也就是说不是固定的,用户可以根据自身的需求去自定义标签 XML的作用主要是用来存储数据和传 ...

  6. Android中XML的三种解析器分析、实战

    XML解析器介绍 Android中提供了三种方式来解析XML: SAX(simple API for XML) DOM(文档对象模型) 以及Android内部使用的Pull解析. SAX(simple ...

  7. XML四种经典解析方法

    xml文件 <?xml version="1.0" encoding="GB2312"?>  <RESULT>  <VALUE&g ...

  8. JavaWeb-05 XML基础(Dom解析和Sax解析)

    JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据 ...

  9. Python 标准库之 xml.etree.ElementTree xml解析

    Python 标准库之 xml.etree.ElementTree Python中有多种xml处理API,常用的有xml.dom.*模块.xml.sax.*模块.xml.parser.expat模块和 ...

  10. c语言解析xml字符串_Python XML解析

    Python XML解析 什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是 ...

最新文章

  1. python源码学习_【Python学习】Python源码阅读(一)
  2. ML激活函数使用法则
  3. mysql数据库与oracle_oracle与mysql数据库的区别
  4. 二值图像连通 C语言,二值图像统计连通区域C语言版
  5. MySQL运算符,SQL,算术比较逻辑位,优先级,正则表达式,完整详细可收藏
  6. Blizzard Transitions for Mac - 动态风雪过渡效果FCPX转场
  7. 低温linux内核启动readl,Linux内核启动流程分析(一)
  8. jaxen-1.1-beta-6.jar下载,Dom4j的xpath的使用
  9. 蜗牛连珠五子棋改进版
  10. QT入门-可视化UI设计
  11. python乒乓球比赛规则介绍_乒乓球比赛详细规则
  12. 将系统临时文件夹恢复到原来默认的目录
  13. 加拿大办理电动自行车申请GCC认证
  14. 社群是什么?真正的社群是怎么样的?
  15. thinkphp5如何对接使用阿里云短信
  16. 什么是主从复制?mysql主从复制?redis主从复制?
  17. 由“人肉搜索”到“人肉防火墙”想到的。。。
  18. 读aroundall的回复有感
  19. 【C语言】初始C语言系列 代码详解 _ 编程入门 _【内附代码和图片】_ [初阶篇 _ 总结复习]
  20. 中诚信报告预计2019年中国GDP增长率约6.3%

热门文章

  1. 饿了么:日订单量超900万的架构设计及演进之路
  2. shell应用之习题一
  3. 关于 exynos 4412 按键中断 异步通知
  4. H5 新特性之 fileReader 实现本地图片视频资源的预览
  5. JavaScriptSerializer 类
  6. 一个防御SQL注入攻击需要注意的问题
  7. (转)倒卖火车票的惊人黑幕全过程
  8. HTML PS 环境搭建,快捷键及简单图片处理(图片测量及抠取)
  9. Qt 2D绘图之一:基本图形绘制和渐变填充
  10. iOS关于setContentOffset的一些细节问题