xml解析

xml (extensible markup language)
1.xml 是可扩展标记语言
2.xml是一种标记语言,类似于html
3.xml的设计宗旨是传输数据,而非显示数据
4.xml没有被预定义
5.使用约束的xml文档设计具有自我描述性
6.xml是w3c的推荐标准
xml格式
1.描述:<?xml version="1.0" encoding="gbk" ?>
2.根元素
3.子元素
xml元素命名
1.区分大小写
2.字母开头,不能以数字开头
3.命名空间不能包含空格
注释
格式:
注意:不能嵌套
CDATA区 - 解析器不解析此内容
格式: <![CDATA[ 内容 ]]>
转义字符
& : &
< : <
> : >
" : "
' : '
空格 :  
引入css
格式: <?xml-stylesheet type="text/css" href="xx.css" ?>
xml约束
1.DTD
2.Schema

DTD约束
1.关联DTD - 只能引入一种
内部关联:格式:<!DOCTYPE 根元素 [ 约束语法 ]>
外部关联:格式:<!DOCTYPE 根元素 SYSTEM "dtd文件">
公共关联:格式:<!DOCTYPE 根元素 PUBLIC "文件名称" "文件路径">
2.语法-元素
格式:<!ELEMENT 元素名称 (元素内容声明)>
? : 表示该元素可以出现,但是只能出现一次 <!ELEMENT books (book?)>
* : 表示该元素允许出现任意多次,也可以零次 <!ELEMENT books (book*)>
+ : 表示该元素最少出现一次,可以出现多次 <!ELEMENT books (book+)>
() : 用来给元素分组 <!ELEMENT book (name,price)>
| : 表示列出的元素中选择一个 <!ELEMENT book (name|price)>
, : 表示元素必须按照指定的顺序出现 <!ELEMENT book (name,price)>
EMPTY : 如果一个元素的CONTENT 被声明为EMPTY,那么该元素不能包含任何子元素和文本,仅可以使用属性 <!ELEMENT name EMPTY>
ANY : 表示该元素中可以包含任何在DTD中定义的元素内容 <!ELEMENT name ANY>
#PCDATA : 表示该元素可以包含任何字符数据,但是不能在其中包含任何子元素 <!ELEMENT name #PCDATA>
3.语法-属性
格式:<!ATTLIST 元素名称 [属性名称 属性类型 约束].. >
<!ATTLIST book
id ID #REQUIRED
city (北京|上海|广州) "上海" //这个在浏览器没有展示???
company CDATA #FIXED "sun" //这个在浏览器没有展示???
>
#REQUIRED 必须存在的属性
#IMPLIED 可以为空
#FIXED "value" 固定值
Defaultvalue 默认值
设置固定值,方便xml中被引用:设置:<!ENTITY bookVal "java Core"> xm中引用:<title>&bookVal;</title> 这样还可以直接引用一个xml中所有内容
设置固定值,方便dtd中被使用:设置: <!ENTITY % bookInfo "price,name"> dtd中引用:<ELEMENT book (title,%bookInfo;)>

    属性类型
    ID 唯一标识
    CDATA 字符数据
    IDREF 引用已有的唯一标识

Schema约束
1.本身就是一个xml文件,扩展名xsd扩展名xsd (xml schema document)
2.必须有一个根节点,叫Schema
3.是一套预定义的xml元素和属性创建的
4.在eclipse中新建一个xml schema文件即可。
5.新建后添加别名xs: 这个出处 <xs:schema xmlns:xs="">

关联schema - 重点
xmlns : 引用命名空间(xsd的targetNamespace)
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
官方规定 - 用于实例化
xsi:schemaLocation="http://www.example.org/schematest schematest.xsd"
两个参数
1.引用schema名称
2.schema文件位置

schema语法
complexType 复合类型(复杂类型)
sequence 顺序出现 minOccurs最少几个,maxOccurs最大几个
choice 选择出现
all 没有顺序出现,必须全部都在

    simpleContent 简单类型
        extension 扩展
        restriction 约束(限制条件)

四种复杂类型
1.空元素
2.包含其它元素的元素
3.仅包含文本的元素
4.包含元素和文本的元素

案例:
1.仅含有属性的空元素 <attribute name="src"></attribute>
2.仅含有属性的空元素,属性必须写 <attribute name="src" use="required"></attribute>
optional 可选
required 必须
prohibited 禁用
2.仅含有属性的空元素,属性必须写,并且规定值的类型<attribute name="src" use="required" type="integer"></attribute>
3.必须含有属性的非空元素

schema自定义类型
<xs:simpleType name="string">
<xs:restriction base="xs:string">
<xs:pattern value="\d{6}-\d{8}-\d{4}"></xs:pattern>
</xs:restriction>
</xs:simpleType>
需要用自己的命名空间引用:<xs:element name="books" type="tns:string"></xs:element>
tns是自己的命名空间

注意:
xmlns : 引用命名空间
xmlns:tns : 是对命名空间起一个叫 tns 的别名
xmlns:xsi :值是固定写法 http://www.w3.org/2001/XMLSchema-instance,每一个xml都要有
xsi:schemaLocation : 是命名空间的位置
targetNamespace : 命名空间

xml解析
1.DOM解析 ,全部加载到内存。
获得工厂实例 DocumentBuilderFactory
通过工厂获得解析器实例 DocumentBuilder
通过解析器 Document
解析xml 根元素getDocumentElement,子元素getElementsByTagName,属性getAttributes
2.SAX解析
获得工厂实例 SAXParserFactory
创建解析器 SAXParser
创建解析Handler DefaultHandler(startDocument,endDocument,startElement,endElement,characters)
解析xml 注意:文本值的赋值需要全局变量注意清空全局变量
从Handler中获得解析的集合 开放get方法
3.Dom4j解析
获得解析器 SAXReader
解析获得Document对象 Document
获得根元素 getRootElement()
获得所有子元素 elements()
遍历所有子元素 多层for循环遍历
4.Dom4j-xpath查询
5.Dom4j-curd

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. XML总结 1.1. XML简介 XML : 可扩展的标记语言。(和HTML非常类似的) 可扩展的。 自定义...
    Ethan_Walker阅读 8,472评论 0 12
  • 1. XML简介 以下内容来自于http://www.w3school.com.cn/xml 基本知识 XML 和...
    WebSSO阅读 6,046评论 1 7
  • 一、绪论 上周工作需要了解项目的一些大体内容,结果在xml解析这一块看的迷迷糊糊的,所以在这里把学习到xm...
    cao健强阅读 9,669评论 1 7
  • Xml Schema的用途 1. 定义一个Xml文档中都有什么元素 2. 定义一个Xml文档中都会有什么属性 ...
    _东邪_阅读 7,013评论 2 4
  • 1 XML解析No29 【 XML:可拓展标记语言,语言和HTML类似,也是一种标记语言。 特点:标记是自定义...
    征程_Journey阅读 5,646评论 0 9

友情链接更多精彩内容