微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

XML简单总结0309day08

XML总结

1.XML的简介

XML

HTML

EXtensible MarkuP Language

可扩展标记语言,可自定义标签

(1)名称中可以包含字母、数字、下划线、减号,但不能以数字、减号开头

(2)不能以xml开头,无论是大写还是小写都不可以

(3)不能包含空格

Hypertext markuplanguage

超文本标记语言,固定标签

严格区分大小写

不区分大小写

所有的标签必须成对出现,且标签不能交叉嵌套

大多的标签是成对出现,但也有不成对出现的标签,如<br>

文档声明必须为<?xml开头,以?>结束

html无此要求

标签结构:开始标签、元素体、结束标签

标签结构:开始标签、元素体、结束标签

属性是元素的一部分,它必须出现在元素的开始标签中,一个元素可以有0~N个属性,但一个元素中不能出现同名属性

属性不必出现在元素的开始标签中,可以放在css文件中,或者内联css

注释以“<!--”开始,以“-->”结束

注释以“<!--”开始,以“-->”结束

用来存储数据或配置文件

用来解析显示页面

2.XML中常用的转义字符

大于号(&gt;)

小于号(&lt;)

双引号(&quot;)

单引号(&apos;)

&号(&amps;)

备注:当大量的转义字符出现在xml文档中时,会使xml文档的可读性大幅度降低。这时如果使用CDATA段就会好一些。

在CDATA段中出现的“<”、“>”、“””、“’”、“&”,都无需使用转义字

符。CDATA的格式:<![CDATA[ 要显示内容 ]]>

3.XML约束

DTD约束

Schema约束

DTD(Document Type DeFinition),文档类型定义,用来约束XML文档。

Schema是新的XML文档约束;要比DTD强大很多;

Schema本身也是XML文档,但Schema文档的扩展名为xsd,而不是xml。

内部DTD:在XML文档内部嵌入DTD,只

对当前XML文档有效;

外部DTD:独立的DTD文件,扩展名为.dtd;

<!DOCTYPE students SYstem“stud.dtd”>

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

<schema xmlns="http://www.w3.org/2001/XMLSchema"

targetNamespace="http://www.example.org/demo"

elementFormDefault="qualified">

<element name="bookstore">

<complexType> <!—包含元素或属性标签-->

<sequence maxOccurs="3" minOccurs="1"><!—至少出现1次,最多3次-->

<element name="book">

<complexType>

<sequence>

<element name="title">

<complexType>

<simpleContent>

<extension base="string">

<attribute name="lang" type="string"></attribute>

</extension>

</simpleContent>

</complexType>

</element>

<element name="author" type="string"></element>

<element name="year" type="date"></element>

<element name="price" type="double"></element>

</sequence>

<attribute name="category" type="string" use="required"></attribute>

</complexType>

</element>

</sequence>

</complexType>

</element>

</schema>

内部示例:

<!ELEMENT students (student+)>

<!ELEMENT student (name,age,sex)>

<!ELEMENT name (#PCDATA)>

<!ELEMENT age (#PCDATA)>

<!ELEMENT sex (#PCDATA)>

使用*、+、?来指定子元素出现的次数

*:可以出现0~N次;

+:可以出现1~N次;

?:可以出现0~1次。

4.XML的解析

在xml的解析中主要讲解了dom4j

4.1 dom4j的快速入门:

//第一步:创建解析对象

SAXReader sr=new SAXReader();

//第二步:读取相应的XML文件,read中的内容为需要读取的xml文件的路径

Document doc=sr.read(“*******”);

//第三步:得到相应的根元素

Element root=doc.getRootElement();

//再调用其他方法获取子元素

4.2 Xpath的快速入门

//第一步:创建解析对象

SAXReader reader = new SAXReader();

//第二步:读取xml文件

Document doc=reader.read(“*****”);

//第三步:得到要求的结点(Nodes或singleNode)

demo1

List<Element> elements = document.selectNodes("//year");

//该方法是获得所有year标签

for(Element ele:elements){

System.out.println(ele.getText());

}

demo2

Element ele = (Element) document.selectSingleNode("//book[@category='WEB']/price");

//该方法获取属性名为category,属性值为web的book标签下的price标签,结果是单个标签

System.out.println(ele.getText());

dom4j中常用的方法

Node方法

l String asXML():把当前节点转换成字符串,如果当前Node是Document,那么就会把整个XML文档返回;

l String getName()获取当前节点名字;Document的名字就是绑定的XML文档的路径;Element的名字就是元素名称;Attribute的名字就是属性名;

l Document getDocument():返回当前节点所在的Document对象;

l short getNodeType()获取当前节点的类型;

l String getNodeTypeName()获取当前节点的类型名称,例如当前节点是Document的话,那么该方法返回Document;

l String getStringValue()获取当前节点的子孙节点中所有文本内容连接成的字符串;

l String getText()获取当前节点的文本内容。如果当前节点是Text等文本节点,那么本方法返回文本内容;例如当前节点是Element,那么当前节点的内容不是子元素,而是纯文本内容,那么返回文本内容,否则返回空字符串;

l void setDocument(Document doc):给当前节点设置文档元素;

l void setParent(Element parent):给当前节点设置父元素;

l void setText(String text):给当前节点设置文本内容

Branch方法

l void add(Element e)添加子元素;

l void add(Node node)添加子节点;

l void add(Comment comment)添加注释;

l Element addElement(String eleName):通过名字添加子元素,返回值为子元素对象;

l void clearContent():清空所有子内容

l List content()获取所有子内容,与获取所有子元素的区别是,<name>liSi</name>元素没有子元素,但有子内容

l Element elementById(String id):如果元素有名为“ID”的属性,那么可以使用这个方法来查找;

l int indexOf(Node node):查找子节点在子节点列表中的下标位置;

l Node node(int index):通过下标获取子节点;

l int nodeCount()获取子节点的个数;

l Iterator nodeIterator()获取子节点列表的迭代器对象;

l boolean remove(Node node):移除指定子节点;

l boolean remove(Commont commont):移除指定注释;

l boolean remove(Element e):移除指定子元素;

l void setContent(List content) :设置子节点内容

Document方法

l Element getRootElement()获取根元素;

l void setRootElement():设置根元素;

l String getXmlEncoding()获取XML文档的编码;

l void setXmlEncoding():设置XML文档的编码;

Element方法

l void add(Attribute attr)添加属性节点;

l void add(CDATA cdata)添加CDATA段节点;

l void add(Text Text)添加Text节点;

l Element addAttribute(String name,String value)添加属性,返回值为当前元素本身;

l Element addCDATA(String cdata)添加CDATA段节点;

l Element addComment(String comment)添加属性节点;

l Element addText(String text)添加Text节点;

l void appendAttributes(Element e):把参数元素e的所有属性添加到当前元素中;

l Attribute attribute(int index)获取指定下标位置上的属性对象;

l Attribute attribute(String name):通过指定属性名称获取属性对象;

l int attributeCount()获取属性个数;

l Iterator attributeIterator()获取当前元素属性集合的迭代器;

l List attributes()获取当前元素的属性集合;

l String attributeValue(String name)获取当前元素指定名称属性值;

l Element createcopy():clone当前元素对象,但不会copy父元素。也就是说新元素没有父元素,但有子元素;

l Element element(String name)获取当前元素第一个名称为name的子元素;

l Iterator elementIterator()获取当前元素的子元素集合的迭代器;

l Iterator elementIterator(String name)获取当前元素中指定名称的子元素集合的迭代器;

l List elements()获取当前元素子元素集合;

l List elements(String name)获取当前元素指定名称的子元素集合;

l String elementText(String name)获取当前元素指定名称的第一个元素文件内容

l String elementTextTrime(String name):同上,只是去除了无用空白;

l boolean isTextOnly():当前元素是否为纯文本内容元素;

l boolean remove(Attribute attr):移除属性

l boolean remove(CDATA cdata):移除CDATA;

l boolean remove(Text text):移除Text。

DocumentHelper静态方法介绍:

l static Document createDocument():创建Dcoument对象;

l static Element createElement(String name):创建指定名称的元素对象;

l static Attribute createAttrbute(Element owner,String name,String value):创建属性对象;

l static Text createText(String text):创建属性对象;

  • static Document parseText(String text):通过给定的字符串生成Document对象;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。