DOM4J介绍与代码示例(一)
2010-10-22 16:04
417 查看
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);}
st1\:*{behavior:url(#ieooui) }
DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J下载jar包:http://downloads.sourceforge.net/dom4j/dom4j-1.6.1.jar
JAXEN(对XPath的支持):http://dist.codehaus.org/jaxen/distributions/jaxen-1.1.1.zip
1.DOM4J主要接口
DOM4J主要接口都在org.dom4j这个包里定义。
![](http://img1.51cto.com/attachment/200901/200901131231837672201.jpg)
-Node为所有的dom4j中XML节点定义了多态行为;
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity;
-Attribute定义了XML的属性;
-ProcessingInstruction 定义 XML 处理指令;
-CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text;
|- CDATA 定义了XML CDATA 区域;
|-Text 定义XML 文本节点;
|- Comment 定义了XML注释的行为;
2.创建XML文档
示例xml:students.xml
下面是用dom4j创建上述文档,通过两种方式创建,一种是调用dom4j提供的方法,一种是通过字符串转换。
XmlGen.java
方法generateDocumentByMethod()通过调用方法构建xml文档:
1.使用DocumentHelper得到Document实例
Document document = DocumentHelper.createDocument();
2.创建Processing Instruction
document.addProcessingInstruction("xml-stylesheet", inMap);
3.创建元素Element
Element studentsElement = document.addElement("students");
4.为元素添加注释Comment
studentsElement.addComment("An Student Catalog");
5.为元素添加属性
studentsElement.addComment("An Student Catalog");
6.为元素添加文本值Text
ageElement.setText("18");
方法generateDocumentByString()通过字符串转换直接构建xml文档,使用DocumentHelper.parseText()来实现.
[align=left]document = DocumentHelper.parseText(text);[/align]
方法saveDocument(Document document, File outputXml)将文档输出到文件保存,可指定字符编码,可指定格式化输出。
3.修改XML文档
这里使用xpath来定位待修改的元素和属性,需要jaxen的支持。
示例中将students-gen.xml的第一个student元素的sn属性改为001,其子元素name内容改为jeff。
XmlMod.java
st1\:*{behavior:url(#ieooui) }
DOM4J是dom4j.org出品的一个开源XML解析包。Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。
DOM4J下载jar包:http://downloads.sourceforge.net/dom4j/dom4j-1.6.1.jar
JAXEN(对XPath的支持):http://dist.codehaus.org/jaxen/distributions/jaxen-1.1.1.zip
1.DOM4J主要接口
DOM4J主要接口都在org.dom4j这个包里定义。
![](http://img1.51cto.com/attachment/200901/200901131231837672201.jpg)
-Node为所有的dom4j中XML节点定义了多态行为;
-Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为;
|-Element 定义XML 元素;
|-Document定义了XML文档;
-DocumentType 定义XML DOCTYPE声明;
-Entity定义 XML entity;
-Attribute定义了XML的属性;
-ProcessingInstruction 定义 XML 处理指令;
-CharacterData是一个标识借口,标识基于字符的节点。如CDATA,Comment, Text;
|- CDATA 定义了XML CDATA 区域;
|-Text 定义XML 文本节点;
|- Comment 定义了XML注释的行为;
2.创建XML文档
示例xml:students.xml
[align=left]<?xml version="1.0" encoding="UTF-8"?> [/align] [align=left]<?xml-stylesheet type="text/xsl" href="students.xsl"?>[/align] [align=left]<students>[/align] [align=left] <!--A Student Catalog-->[/align] [align=left] <student sn="01">[/align] [align=left] <name>sam</name>[/align] [align=left] <age>18</age>[/align] [align=left] </student>[/align] [align=left] <student sn="02">[/align] [align=left] <name>lin</name>[/align] [align=left] <age>20</age>[/align] [align=left] </student>[/align] </students> |
XmlGen.java
[align=left]import java.io.File;[/align] [align=left]import java.io.FileWriter;[/align] [align=left]import java.io.IOException;[/align] [align=left]import java.util.HashMap;[/align] [align=left]import java.util.Map;[/align] [align=left] [/align] [align=left]import org.dom4j.Document;[/align] [align=left]import org.dom4j.DocumentException;[/align] [align=left]import org.dom4j.DocumentHelper;[/align] [align=left]import org.dom4j.Element;[/align] [align=left]import org.dom4j.io.XMLWriter;[/align] [align=left] [/align] [align=left]public class XmlGen {[/align] [align=left] public Document generateDocumentByMethod() {[/align] [align=left] Document document = DocumentHelper.createDocument();[/align] [align=left] // ProcessingInstruction[/align] [align=left] Map<String, String> inMap = new HashMap<String, String>();[/align] [align=left] inMap.put("type", "text/xsl");[/align] [align=left] inMap.put("href", "students.xsl");[/align] [align=left] document.addProcessingInstruction("xml-stylesheet", inMap);[/align] [align=left] // root element[/align] [align=left] Element studentsElement = document.addElement("students");[/align] [align=left] studentsElement.addComment("An Student Catalog");[/align] [align=left] // son element[/align] [align=left] Element stuElement = studentsElement.addElement("student");[/align] [align=left] stuElement.addAttribute("sn", "01");[/align] [align=left] Element nameElement = stuElement.addElement("name");[/align] [align=left] nameElement.setText("sam");[/align] [align=left] Element ageElement = stuElement.addElement("age");[/align] [align=left] ageElement.setText("18");[/align] [align=left] // son element[/align] [align=left] Element anotherStuElement = studentsElement.addElement("student");[/align] [align=left] anotherStuElement.addAttribute("sn", "02");[/align] [align=left] Element anotherNameElement = anotherStuElement.addElement("name");[/align] [align=left] anotherNameElement.setText("lin");[/align] [align=left] Element anotherAgeElement = anotherStuElement.addElement("age");[/align] [align=left] anotherAgeElement.setText("20");[/align] [align=left] [/align] [align=left] return document;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public Document generateDocumentByString() {[/align] [align=left] String text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +[/align] [align=left] "<?xml-stylesheet type=\"text/xsl\" href=\"students.xsl\"?>" +[/align] [align=left] "<students><!--An Student Catalog--> <student sn=\"01\">" +[/align] [align=left] "<name>sam</name><age>18</age></student><student sn=\"02\">" +[/align] [align=left] "<name>lin</name><age>20</age></student></students>";[/align] [align=left] Document document = null;[/align] [align=left] try {[/align] [align=left] document = DocumentHelper.parseText(text);[/align] [align=left] } catch (DocumentException e) {[/align] [align=left] e.printStackTrace();[/align] [align=left] }[/align] [align=left] return document;[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void saveDocument(Document document, File outputXml) {[/align] [align=left] try {[/align] [align=left] // 美化格式[/align] [align=left] OutputFormat format = OutputFormat.createPrettyPrint();[/align] [align=left] /*// 缩减格式[/align] [align=left] OutputFormat format = OutputFormat.createCompactFormat();*/[/align] [align=left] /*// 指定XML编码[/align] [align=left] format.setEncoding("GBK");*/[/align] [align=left] XMLWriter output = new XMLWriter(new FileWriter(outputXml), format);[/align] [align=left] output.write(document);[/align] [align=left] output.close();[/align] [align=left] } catch (IOException e) {[/align] [align=left] System.out.println(e.getMessage());[/align] [align=left] }[/align] [align=left] }[/align] [align=left] [/align] [align=left] public static void main(String[] argv) {[/align] [align=left] XmlGen dom4j = new XmlGen();[/align] [align=left] Document document = null;[/align] [align=left] // document=dom4j.generateDocumentByMethod();[/align] [align=left] document = dom4j.generateDocumentByString();[/align] [align=left] dom4j.saveDocument(document, new File("output.xml"));[/align] [align=left] }[/align] [align=left]}[/align] |
1.使用DocumentHelper得到Document实例
Document document = DocumentHelper.createDocument();
2.创建Processing Instruction
document.addProcessingInstruction("xml-stylesheet", inMap);
3.创建元素Element
Element studentsElement = document.addElement("students");
4.为元素添加注释Comment
studentsElement.addComment("An Student Catalog");
5.为元素添加属性
studentsElement.addComment("An Student Catalog");
6.为元素添加文本值Text
ageElement.setText("18");
方法generateDocumentByString()通过字符串转换直接构建xml文档,使用DocumentHelper.parseText()来实现.
[align=left]document = DocumentHelper.parseText(text);[/align]
方法saveDocument(Document document, File outputXml)将文档输出到文件保存,可指定字符编码,可指定格式化输出。
3.修改XML文档
这里使用xpath来定位待修改的元素和属性,需要jaxen的支持。
示例中将students-gen.xml的第一个student元素的sn属性改为001,其子元素name内容改为jeff。
XmlMod.java
[align=left]import java.io.File;[/align] [align=left]import java.io.FileWriter;[/align] [align=left]import java.io.IOException;[/align] [align=left]import java.util.Iterator;[/align] [align=left]import java.util.List;[/align] [align=left] [/align] [align=left]import org.dom4j.Attribute;[/align] [align=left]import org.dom4j.Document;[/align] [align=left]import org.dom4j.DocumentException;[/align] [align=left]import org.dom4j.Element;[/align] [align=left]import org.dom4j.io.SAXReader;[/align] [align=left]import org.dom4j.io.XMLWriter;[/align] [align=left] [/align] [align=left]public class XmlMod {[/align] [align=left] public void modifyDocument(File inputXml) {[/align] [align=left] try {[/align] [align=left] SAXReader saxReader = new SAXReader();[/align] [align=left] Document document = saxReader.read(inputXml);[/align] [align=left] List list = document.selectNodes("//students/student/@sn");[/align] [align=left] Iterator iter = list.iterator();[/align] [align=left] while (iter.hasNext()) {[/align] [align=left] Attribute attribute = (Attribute) iter.next();[/align] [align=left] if (attribute.getValue().equals("01"))[/align] [align=left] attribute.setValue("001");[/align] [align=left] }[/align] [align=left] [/align] [align=left] list = document.selectNodes("//students/student");[/align] [align=left] iter = list.iterator();[/align] [align=left] while (iter.hasNext()) {[/align] [align=left] Element element = (Element) iter.next();[/align] [align=left] Iterator iterator = element.elementIterator("name");[/align] [align=left] while (iterator.hasNext()) {[/align] [align=left] Element nameElement = (Element) iterator.next();[/align] [align=left] if (nameElement.getText().equals("sam"))[/align] [align=left] nameElement.setText("jeff");[/align] [align=left] }[/align] [align=left] }[/align] [align=left] [/align] [align=left] XMLWriter output = new XMLWriter(new FileWriter(new File([/align] [align=left] "students-modified.xml")));[/align] [align=left] output.write(document);[/align] [align=left] output.close();[/align] [align=left] }[/align] [align=left] [/align] [align=left] catch (DocumentException e) {[/align] [align=left] System.out.println(e.getMessage());[/align] [align=left] } catch (IOException e) {[/align] [align=left] System.out.println(e.getMessage());[/align] [align=left] }[/align] [align=left] }[/align] [align=left] [/align] [align=left] public static void main(String[] argv) {[/align] [align=left] XmlMod dom4jParser = new XmlMod();[/align] [align=left] dom4jParser.modifyDocument(new File("students-gen.xml"));[/align] [align=left] }[/align] } |
相关文章推荐
- DOM4J介绍与代码示例(转载)
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例(2)-XPath 详解
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例 推荐
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例(二)
- DOM4J介绍与代码示例【转载】
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例
- DOM4J介绍与代码示例 (强大的xml处理工具)
- DOM4J介绍与代码示例
- 在java中使用dom4j解析xml(示例代码)
- 深度学习之卷积神经网络CNN及tensorflow代码实现示例详细介绍
- 在java中使用dom4j解析xml(示例代码)
- 在java中使用dom4j解析xml(示例代码)
- 通俗易懂地介绍梯度下降法(以线性回归为例,配以Python示例代码)
- Autolayout的简单介绍和示例代码