加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML简单总结(0309day08)

发布时间:2020-12-16 08:42:15 所属栏目:百科 来源:网络整理
导读:XML总结 1.XML的简介 XML HTML EXtensible Markup Language 可扩展标记语言,可自定义标签 (1)名称中可以包含 字母、数字、下划线、减号 ,但 不能以数字、减号开头 (2) 不能以xml 开头,无论是大写还是小写都不可以 (3) 不能包含空格 Hypertext marku

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对象;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读