1、XML简介:
-
XML(EXtensible Markuo Language),可扩展标记语言。
特点:
-
XML与操作系统、编程语言的开发平台无关
-
实现不同系统之间的数据交换
作用:
-
数据交互
-
配置应用程序和网站
-
Ajax基石
2、XML文档结构:
2、XML文档结构:
<标记、标签、元素>
根元素开始时放在<>里 结束时放在</>里
<!--这里写XML的注释-->
3、XML标签:
XML文档内容由一系列标签元素组成 实例:<元素名 属性名 =“属性值”>元素内容</元素名>
如果没有元素内容想表示空元素的话可以这么写:<name> </name>、<name></name>、<name/>
语法:
-
属性值用双引号包裹
-
一个元素可以有多个属性
-
属性值中不能直接包含<,'',$(不建议:‘,>)
4、XML编写注意事项:
标签编写注意事项:
-
所有XML元素都必须有结束标签
-
XML标签对大小写敏感
-
XML必须正确的嵌套
-
同级标签以缩进对齐
-
元素名称可以包含字母、数字或其他的字符
-
元素名称不能以数字或者标点符号开始
-
元素名称中不能含空格
5、转义符:
6、XML解析器及命名空间:
-
解析器类型
-非验证解析器
检查文档格式是否良好
-验证解析器
使用DTD检查文档的有效性
-
XML命名空间的作用
XML 命名空间属性被放置于元素的开始标签之中,并使用以下的语法:
xmlns:namespace-prefix="namespaceURI"
示例: <?xml version="1.0" encoding="UTF-8"?> <cameras xmlns:canon="http://www.canon" xmlns:nikon="http://www.nikon.com"> <canon:camera prodID="P663" name="Camera傻瓜相机"/> <nikon:camera prodID="K29B3" name="Camera超级35毫米相机"/> </camera>
7、解析XML技术:
-
DOM
基于XML文档树结构的解析
适用于多次访问的XML文档
特点:比较小号资源
其中带<>的叫 元素节点 、文字的叫文本节点、属性的叫 属性节点。
-
SAK
基于事件的解析
适用于大量数据的XML文档
特点:占用资源少,内层消耗小
-
DOM4J
非常优秀的Java XML API
性能优异,功能强大
开放源代码
1):DOM解析XML:
DOM解析XML,会一次性读入XML文件,会把文件中的所有元素,解析成一个个
Node对象节点。DOM解析便于操作,可以轻松完成增删改查,但是DOM解析的
文档不适合过大,因为DOM解析是将文档全部读入内存之中,过大的文件影响了
机器性能,甚至容易导致内存溢出。
DOM解析思路: ①创建工厂实例:DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); ②创建工厂解析器:DocumentBuilder db = dbf.newDocumentBuilder(); ③给定指定的xml文件:Document doc = db.parse("这里放的是xml文件目录"); 需要用到的重要方法: getElementsByTagName(String name):返回一个NodeList对象,它包含了所有指定标签名称的标签。 getDocumentElement():返回一个代表这个DOM树的根节点的Element对象,也就是代表XML文档根元素的对象。
NodeList对象: getLength():返回列表的长度。 item(int index):返回指定位置的Node对象。
Node对象: getChidNodes():此节点包含的所有子节点的NodeList。 getFirstChild():如果节点存在子节点,则返回第一个子节点。 getLastChild():如果节点存在子节点,则返回最后一个子节点。 getNextSibling():返回DOM树中这个节点的下一个兄弟节点。 getPreviousSibling():返回DOM树中这个节点的上一个兄弟节点。 getNodeName():返回节点的名称。 getNodeValue():返回节点的值。 getNodeType():返回节点的类型。
Element对象: getChildNodes()获取标签的元素 getTextContent获取标签元素的内容 getAttribute(String attributename):返回标签中指定属性名称的属性的值 getElementsByTagName(String name):返回具有指定标记名称的所有后代Elements的NodeList.
8、DOM4J解析简介及导入jar包:
DOM4J是一个易用的、来源的库,用于XML、XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM、SAM和JAXP。
DOM4J使用起来非常简单,只要了解基本的XML-DOM模型,就能使用。DOM4J最大的特色是使用大量的接口,目前对DOM4J的使用越来越广泛。
DOM4J的主要接口都在org.dom4j包里定义。 Attribute:定义了XML的属性 Branch:为能够包含子节点的节点,如XML元素(Element)和文档(Document)定义了一个公共的行为。 CDATA:定义了XML CDATA区域。 CharacterData:是一个标识接口,标识基于字符的节点,如CDATA、Comment和Text。 Comment:定义了XML注释的行为。 Document:定义了XML文档。 DocumentType:定义XML DOCTYPE声明。 Element:定义了XML元素。 ElementHandler:定义了Element对象的处理器。 ElementPath:被ElementHandler使用,用于取得当前正在处理的路径层次信息。 Entity:定义XML entity。 Node:为DOM4j中所有的XML节点定义了多态行为。 NodeFilter:定义了在DOM4j节点中产生的一个滤镜或谓词(predict)的行为。 Text:定义XML文本节点。 Visitor:用于实现Visitor模式。 XPath:在分析一个字符串后会提供一个XPath表达式。