Dom4j解析文档

来源:互联网 发布:男生自慰肛门知乎 编辑:程序博客网 时间:2024/05/29 15:39

Dom4j解析文档

1、Dom4j解析文档

特点:Dom4j是一个简单、灵活的开放源代码的库。Dom4j是由早期开发JDOM开发的。与JDOM不同的是,dom4j使用接口和抽象的人分离出来而后独立基类,虽然Dom4j的API相对要复杂一些,但它提供了比JDOM更好的灵活性。

优点:Dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极易使用的特点。现在很多软件采用的Dom4j,例如Hibernate,包括sun公司自己的JAXM也用了Dom4j。

2、DOM4j中,获得Document对象的方式有三种:

1.读取XML文件,获得document对象

SAXReader reader = new SAXReader();
Document document = reader.read(new File("input.xml"));

2.解析XML形式的文本,得到document对象.

String text ="<members></members>";
Document document = DocumentHelper.parseText(text);

3.主动创建document对象.

Document document =DocumentHelper.createDocument();
//创建根节点

Element root =document.addElement("members");

3、一下代码是dom4J对xml文档的增删改查

//遍历所有节点

public static void listNodes(Elementelememt){

//org.dom4j.Element root =doc.getRootElement();

//返回的是一个迭代器,把根节点下的所有子字节的元素都获取到,并放到迭代器里

Iterator it = elememt.elementIterator();

while(it.hasNext()){

Element sun = (Element) it.next();

System.out.println("这是一个节点:"+sun.getName());

listNodes(sun);

}

}

//遍历属性节点

public static voidlistElementAttribute(Element element){

System.out.println(element.attributeCount());

for(Iterator it =element.attributeIterator();it.hasNext();){

Attribute att = (Attribute)it.next();//强制类型装换

System.out.println(att.getName()+" "+att.getText()+""+att.getNodeTypeName());

}

}

//添加一个元素

public static void createElement(Documentdoc) throws Exception,FileNotFoundException{

//找到需要添加节点的位置,寻找根

Element root = doc.getRootElement();

Element parent =root.addElement("书");

//添加节点

Element element =parent.addElement("出版社");

element.addText("清华大学出版");///添加内容

element.addAttribute("级别", "一级出版社");//添加属性

//把内存中的语句写入到文档中

//构建字符输出流

OutputStreamWriter writer = new OutputStreamWriter(newFileOutputStream("src/Book.xml"),"utf-8");

XMLWriter xmlWriter = new XMLWriter();

xmlWriter.write(doc);

xmlWriter.close();

//writer.write(comment)

}

public static void deleteElement(Documentdoc) throws Exception,FileNotFoundException{

//找到需要添加节点的位置,寻找根

Element root = doc.getRootElement();

Element parent =root.addElement("书");

//删除节点

Element element =parent.element("作者");

parent.remove(element);

//修改元素节点的内容

Element price =parent.element("售价");

price.setText("50");

//删除某一个元素节点的属性

Element publish =parent.element("出版社");

Attribute att =publish.attribute("级别");

publish.remove(att);

//把内存中的语句写入到文档中

//构建字符输出流

OutputStreamWriter writer = new OutputStreamWriter(newFileOutputStream("src/Book.xml"),"utf-8");

XMLWriter xmlWriter = new XMLWriter();

xmlWriter.write(doc);

xmlWriter.close();

//writer.write(comment)

}

介绍Scheam

是一种用于定义和描述xml文档的模式文档(约束文档),遵循这个文档书学写的xml文档成为实例文档,他的出现是为了克服dtd的约束,他能支持更多的数据类型,并支持用户自定义新的数据类型,他有字符串类型,日期类型。

XML Schema 和 DTD的不同:

• XML Schema符合XML语法结构。

• DOM、SAX等XML API很容易解析出XML Schema文档中的内容。

• XML Schema对名称空间支持得非常好。

• XML Schema比XML DTD支持更多的数据类型,并支持用户自定义新的数据类型。

• XML Schema定义约束的能力非常强大,可以对XML实例文档作出细致的语义限制。

• XML Schema不能像DTD一样定义实体,比DTD更复杂,但Xml Schema现在已是w3c组织的标准,它正逐步取代DTD。

Scheam的了解:

l XML Schema 文件自身就是一个XML文件,但它的扩展名通常为.xsd。

l 一个XMLSchema文档通常称之为模式文档(约束文档),遵循这个文档书写的xml文件称之为实例文档

l 和XML文件一样,一个XML Schema文档也必须有一个根结点,但这个根结点的名称为Schema。

l 编写了一个XMLSchema约束文档后,通常需要把这个文件中声明的元素绑定到一个URI地址上,在XML Schema技术中有一个专业术语来描述这个过程,即把XML Schema文档声明的元素绑定到一个名称空间上,以后XML文件就可以通过这个URI(即名称空间)来告诉解析引擎,xml文档中编写的元素来自哪里,被谁约束。

Schema对命名空间是支持非常好的

名称空间是为了解除名称的冲突---------加上前缀------09级java:张三

名称空间的使用

Xml文档中标签

<h:姓名></h:姓名>

<f:姓名></f:姓名>

Schema的约束能力非常大,,可记性对属性非常细致的操作

Schema约束的快速入门

Schema本身就是xml的文件,扩展名为xsd

Schema的文档通常成为模式文档,遵循这个文档书写的xml文档成为实例文档

Schema文档必须有一个根结点

Schema:book.xsduri地址:把定义好的文档绑定到http://www.csdn..com网站上,是我们随便起的名字

Schema:book.xsd

Schema:book.xsdhttp://www.csdn..com 前缀为book

Xml文档

<book:书架></book:书架>指定书架去遵循绑定的约束

book代表的是http://www.csdn..com

 

 

原创粉丝点击