XML基础知识总结

 Xml基础知识



 1.XML属性

 2.XML得约束:排除一些不需要的条件


 dtd约束:

 1.创建后缀名为.dtd文件 

1.看xml中有多少个元素,有多少个就在dtd中写几个

 Schema约束:

1.定义

Schema符合xml语法,xml语句。xml中可以包含多个Schema,通过名称空间来区分(类似于java的包),

可以直接用Int string 类型来定义,但是Schema更复杂。

2.创建一个Schema文件:

复杂元素:

<complexType>

<sequence>

简单元素:

</sequence>

</complexType>

* * *

<sequence> :出现的元素是按照顺序的

<all> :单个标签只能出现一个

<choice> :子标签只能出现一个

<any> :随便出现一个标签

maxOccurs=”unbounded”  :在子标签中,表示标签可以出现无数次

<attribute>  :定义属性,只有在复杂元素中才可以定义属性,在</complexType>前面写


两个Schema应用的时候,用引入Schema别名:标签名称

* 比如<check:name></check:name>这种方法调用


 在xml中引入约束xsd

* xmlns:check=”http://www.w3.org/2001/XMLSchema-instance” “-instance”表示被约束的意思

* xmlns=”http://www.example.org/jaxpText_02”

* check:schemaLocation=”http://www.example.org/jaxpText_02 jaxpText_02.xsd”

* check是用户自定义的名称,xmlns:的值为xsd中targetNamespace的值

* checj:schemaLocation=“targetNamespace的值 xsd的文件名称”




 3.XML和java的结合

1.使用dom解析xml(内存中分配树装结构)

2.使用sax解析:采用事件驱动,边读变解析(从上到下,一行一行的解析,解析到一个对象,返回对象名)




 4.XML的解析

 1.dom解析

documentBuilder:解析器类

抽象类 不能直接new 要使用documentBuilderFactory.newdocumentBuilder调用

 1.直接解析xml方法:parse(“xml路径”),返回整个Document文档

Document document = bulider.parse("XML路径");

2.document的父节点是Node

 document的方法:

getElementsByTagName :返回得到的标签,集合

createElement :创建标签

createTextNode :创建文本内容

appendChild :将内容插到末尾(粘贴)

 NodeLise(数组):

getlength() :获得数组的长度

item(数组) :获得当前位置的值

getTextContent() :得到标签中的内容

3.将在dom解析器中写的内容回写到xml中,利用这个方法回写


TransformerFactory factory = TransformerFactory.newInstance();

Transformer transformer = factory.newTransformer();

transformer.transform(new DOMSource(document), new StreamResult("src/jaxpText_01.xml""xml路径"));

documentBuilderFactory :解析器工厂

_也是抽象类,使用newInstance()调用

DocumentBuilderFactory builderfactory = DocumentBuilderFactory.newInstance();创建实例builderfactory _


 2.sax解析

SAXParser:解析类

通过SAXParserFactory .newSAXParser来得到;

parise(“xml路径”,”执行的事件”);

{

startElement():解析开始标签,返回qName:标签名称

characters() :解析文本内容,通过string构造方法返回

endElement() :解析结束标签,也是通过qName返回标签名称

} 都是自动完成的。

SAXParserFactory :解析器工厂通过newInstance()来得到。


 3.dom4j解析(重点)

 1.导入dom4j的包
 2.得到document
SAXReader reader = new SAXReader();

Document document = reader.read(url);

document的父接口是Node

document方法:

getRootElement:获取根节点,返回为Element,

Element的父接口也是Node

创建解析器

得到document

得到根节点

节点.element(“标签名称”):得到节点下第一个标签为“标签名称”的节点

节点.elements(”标签名称”):得到节点下第一层为“标签名称”的所有节点,为list类型,使用list.get(int)获取是第几个子标签

节点.element() :得到节点下第一层的所有标签,也是list类型。

使用getText()方法获得标签中的值

添加子标签直接使用.addElement(),添加文本直接使用setText().

指定位置插入一个标签:

* 主要是调用list中的add(”位置”,”标签的方法”);

* 所以在某一个复杂元素中插入必须是得到所有的简单元素

* 辅助方法:DocumentHelper.createElement(“标签名称”);来新建一个element

得到属性值(不需要回写xml):

* 标签名称.attributeValue (属性名称);

回写xml:

OutputFormat format = OutputFormat.createPrettyPrint();//定义xml文件的样式

XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("src/jaxpText_dom4j_01.xml"),format);//直接new XMLWriter的类传入两个参数第一个文件路径,第二个文件格式

xmlWriter.write(document);//写入的为document

xmlWriter.close();//关闭这个流
 3.dom4j对于xpath的支持:

* 第一种形式:/aaa /bbb/ccc /表示一层

* 第二种形式://aaa //表示得到所有的

* 第三种形式:* *表示得到所有元素

* 第四种形式:/bbb[1] [1]表示第一个元素[last]表示最后一个元素

* 第五中形式://@属性名称 得到所有含有属性名称的元素

* 第六中形式://aaa[@属性名称=“值”] 表示名称为bbb并且属性名称为这个值得元素

 4.dom4j对于xpach的操作

selectNodes(“xpath语句”):获取多个节点

selectSingleNode(“xpath语句”):获取单个节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值