dom4j参考教程

合集下载

dom4j element方法总结

dom4j element方法总结

dom4j element方法总结DOM4J是一个Java库,用于处理XML文档。

它提供了一种方便的方式来解析、修改和创建XML文档。

以下是DOM4J Element的一些常用方法:1. 获取子元素:`List<Element> elements()`: 获取当前元素的所有子元素。

`List<Element> elements(String name)`: 根据指定的元素名称获取所有子元素。

`Element element(String name)`: 根据指定的元素名称获取子元素对象,如果元素名称重复,则获取第一个元素。

2. 获取和设置文本内容:`String getText()`: 获取当前元素对象的文本内容。

`void setText(String text)`: 设置当前元素对象的文本内容。

3. 获取属性值:`String attributeValue(String name)`: 根据指定的属性名称获取其对应的值。

4. 添加属性:`public Element addAttribute(String name, String value)`: 根据指定的属性名称和值进行添加或修改。

5. 获取根元素:`Element getRootElement()`: 获取根元素对象(根标签)。

6. 遍历所有元素节点:可以通过递归的方式遍历所有元素节点并打印它们的名称。

首先获取根元素,然后对每个子元素递归调用此方法。

7. 其他常用操作:获取元素的命名空间URI、命名空间Prefix等。

判断元素是否有某个属性。

删除或替换子元素等。

使用DOM4J时,建议查阅官方文档或相关教程,以了解更多关于Element 和其它相关功能的详细信息。

Dom4j应用中常用方法总结

Dom4j应用中常用方法总结

Dom4j应用中常用方法总结一:构建dom4j树(表示为Document 元素)常用方法:方式一:直接创建所有元素:dom4j为我们准备了工具类DocumentHelper ,该类的所有的方法都是静态方法,用来创建xml文档的各个组成部分。

1.1.1创建Document 和Element对象:Document doc=DocumentHelper.createDocument();Element eltRoot=DocumentHelper.createElement(“student”);doc.setEltRootElement(eltRoot);1.1.2或者先准备好根元素,使用有参数的构造方法创建Document对象。

Element eltRoot=DocumentHelper.createElement(“student”);Document doc=DocumentHelper.createDocument(eltRoot);1.2:添加节点和设置节点内容:方法:Branch 接口中定义的方法;public Element addElemen(String name) //以指定的name 为当前节点创建一个子节点,并返回新节点的引用public void setText(String text) //将content设置为节点的内容示例如下:Element eltName=eltRoot.addElement(“name”);Element eltAge=eltRoot.addElement(“age”);eltName.setText(“张三”);eltAge.setText(“18”);1.3:添加属性方法:public Element addAttribute(String name,String value)示例如下:eltRoot.addAttribute(“sn”,”01”);方式2:2.1:org.dom4j.io提供了两个类:SAXReader和DOMReader,前者从一个现有的w3c DOM 树构建dom4j树,而SAXReader则使用SAX解析器,从不同的输入源构建dom4j树。

java dom4j 解析

java dom4j 解析

java dom4j 解析DOM4J是一个用于处理XML文档的开源Java库,提供了一种基于树形结构的XML文档处理方式。

通过DOM4J库,我们可以方便地读取、修改和生成XML 文档。

在Java中,使用DOM4J解析XML文档通常需要以下步骤:1. 导入DOM4J库:首先需要将DOM4J库导入到项目中,可以通过Maven或手动下载jar包的方式导入。

2. 创建Document对象:在DOM4J中,XML文档的顶层结构是Document对象,我们需要先创建一个Document对象来表示整个XML文档。

3. 读取XML文档:通过DOM4J提供的SAXReader类,我们可以读取XML 文档并将其解析为Document对象。

可以使用SAXReader的read方法来读取XML 文档。

4. 获取根节点:通过Document对象的getRootElement方法可以获取XML文档的根节点,从而可以通过根节点逐级遍历XML文档的结构。

5. 遍历XML文档:可以通过递归遍历XML文档的节点,获取节点的名称、属性、文本内容等信息。

可以使用Element对象的elements方法获取子节点,使用attributeValue方法获取节点属性的值,使用getText方法获取节点的文本内容。

6. 修改XML文档:通过DOM4J可以方便地修改XML文档的内容,包括添加节点、修改节点属性、修改节点文本内容等操作。

可以使用Element对象的addElement方法添加子节点,setAttributeValue方法修改节点属性的值,setText方法修改节点的文本内容。

7. 生成XML文档:通过DOM4J可以将Document对象生成为XML文档,可以通过OutputFormat类设置XML文档的格式,通过XMLWriter类将Document对象输出为XML文档。

总的来说,使用DOM4J解析XML文档可以方便地读取、修改和生成XML文档,提供了一种便捷的XML文档处理方式。

dom4j操作xml

dom4j操作xml
s1.addElement("姓名").addText("张三") ;
s1.addElement("性别").addText("男") ;
Element s2 = root.addElement("学生2") ;
s2.addAttribute("id", "002") ;
s2.addElement("姓名").addText("李四") ;
e.remove(e.element("年龄")) ;
break;
}
}
OutputFormat format =newOutputFormat().createPrettyPrint() ;
format.setEncoding("GB2312") ;
XMLWriter writer =newXMLWriter(newFileWriter(path),format) ;
break ;
}
}
writer = new XMLWriter(new FileWriter(path),formart) ;
writer.write(doc) ;
writer.close() ;
} catch (Exception e) {
e.printStackTrace();
}
}
5.添加一个Element
format.setEncoding("GB2312") ;
XMLWriter writer = new XMLWriter(new FileWriter(path),format) ;

dom4j用法

dom4j用法

dom4j用法dom4j是一个开源的JavaXML解析库,用于解析XML文档并提供API来操作XML元素和属性。

它可以轻松地读取、分析和生成XML文件。

dom4j支持使用XPath表达式来访问XML文档中的节点和属性。

XPath是一种用于在XML文档中定位节点的语言。

dom4j还提供了一些高级功能,如XML命名空间的支持和DTD验证。

使用dom4j可以轻松地解析XML文档,例如:```SAXReader reader = new SAXReader();Document document = reader.read(newFile('path/to/xml/file.xml'));Element root = document.getRootElement();List<Element> elements = root.elements();for (Element element : elements) {//访问元素}```在上面的代码中,我们使用SAXReader类读取XML文档,并获取根元素。

然后,我们可以使用getRootElement()方法获取XML文档的根元素,并使用elements()方法获取根元素的所有子元素。

除了解析XML文档外,dom4j还提供了API来创建新的XML文档。

例如:```Document document = DocumentHelper.createDocument();Element root = document.addElement('root');Element child = root.addElement('child');child.addAttribute('attribute', 'value');child.setText('text');```在上面的代码中,我们使用DocumentHelper类创建一个新的XML 文档,并添加根元素和一个子元素。

dom4j解析XML的基本用法

dom4j解析XML的基本用法

dom4j解析XML的基本用法dom4j解析XML的基本用法1. 需要的包:dom4j-1.4/dom4j.jar2. 用到的类:import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader;3. 基本操作:创建文档:Document document = DocumentHelper.createDocument();创建根节点:Element catalogElement = document.addElement("catalog");添加注释: catalogElement.addComment("注释");处理指令:catalogElement.addProcessingInstruction("target","text");增加子节点:Element journalElement = catalogElement.addElement("journal");给节点添加属性:journalElement.addAttribute("title", "值");设置节点中的文本:journalElement.setText("值");添加文档类型:document.addDocType("catalog", null,"file://c:/Dtds/catalog.dtd ");创建 xml 文件:XMLWriter output = new XMLWriter(new FileWriter( new File("c:/catalog/catalog.xml") ));output.write( document );output.close();加载 xml 文件:SAXReader saxReader = new SAXReader(); //SAXReader 包含在 org.dom4j.io 包中。

DOM4J详细教程

DOM4J详细教程

DOM4J详细教程
答:
DOM4J是一个Java XML API,它可以用来快速、高效地读取、生成和
修改XML数据。

它支持XPath的完整实现,支持Java5的新功能,并有一
个强大的可扩展的SAX集成,还支持JAXP 1.3、通过支持性能良好的DOM、SAX以及JAXP的结合,它可以提供XML文档的可用性。

1.使用DOM4J
使用DOM4J解析XML文档的主要步骤如下:
(1)创建一个Document对象,该文档对象将描述整个XML文档。

(2)创建一个XMLReader对象,该对象使用DOM4J的API来解析
XML文档。

(3)创建一个DocumentHandler对象,该对象用来处理XML文档内容,如处理XML文档的根元素和子元素等。

(4)使用XMLReader的parse方法来将Document对象与DocumentHandler对象相关联,以便允许访问Document对象的内容。

(5)执行任何必要的处理来解析XML文档中的元素。

2.DOM4J技术
(1)XML读取
DOM4J提供了一组API,可以在处理XML文档时使用。

DOM4J的
org.dom4j.io.XMLReader类可以解析XML文档,将其转换为DOM4J的
Document对象。

它可以使用InputSource或java.io.Reader对象的任何对象,以确保可以将XML文档从字符串、文件或URL读取。

(2)XML写入
(3)XPath查询。

dom4j下载与使用文档

dom4j下载与使用文档

Dom4j下载及使用Dom4j读写XML简介要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在/目前最新dom4j包下载地址:/sourceforge/dom4j/dom4j-1.6.1.zip解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar.以下是相关操作:一.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");// 创建根节点二.节点相关1.获取文档的根节点.Element rootElm = document.getRootElement();2.取得某节点的单个子节点.Element memberElm=root.element("member");// "member"是节点名3.取得节点的文字String text=memberElm.getText();也可以用:String text=root.elementT ext("name");这个是取得根节点下的name字节点的文字.4.取得某节点下名为"member"的所有字节点并进行遍历.List nodes = rootElm.elements("member");for (Iterator it = nodes.iterator(); it.hasNext();) {Element elm = (Element) it.next();// do something}5.对某节点下的所有子节点进行遍历.for(Iterator it=root.elementIterator();it.hasNext();){Element element = (Element) it.next();// do something}6.在某节点下添加子节点.Element ageElm = newMemberElm.addElement("age");7.设置节点文字.ageElm.setText("29");8.删除某节点.parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点三.属性相关.1.取得某节点下的某属性Element root=document.getRootElement();Attribute attribute=root.attribute("size");// 属性名name2.取得属性的文字String text=attribute.getText();也可以用:String text2=root.element("name").attributeValue("firstname");这个是取得根节点下name字节点的属性firstname的值.3.遍历某节点的所有属性Element root=document.getRootElement();for(Iterator it=root.attributeIterator();it.hasNext();){Attribute attribute = (Attribute) it.next();String text=attribute.getText();System.out.println(text);}4.设置某节点的属性和文字.newMemberElm.addAttribute("name", "sitinspring");5.设置属性的文字Attribute attribute=root.attribute("name");attribute.setText("sitinspring");6.删除某属性Attribute attribute=root.attribute("size");// 属性名nameroot.remove(attribute);四.将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.XMLWriter writer = new XMLWriter(new FileWriter("output.xml"));writer.write(document);writer.close();2.文档中含有中文,设置编码格式写入的形式.OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("GBK"); // 指定XML编码XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format);writer.write(document);writer.close();五.字符串与XML的转换1.将字符串转化为XMLString text = "<members> <member>sitinspring</member> </members>";Document document = DocumentHelper.parseText(text);2.将文档或节点的XML转化为字符串.SAXReader reader = new SAXReader();Document document = reader.read(new File("input.xml"));Element root=document.getRootElement();String docXmlText=document.asXML();String rootXmlText=root.asXML();Element memberElm=root.element("member");String memberXmlText=memberElm.asXML();六.使用XPath快速找到节点.读取的XML文档示例<?xml version="1.0" encoding="UTF-8"?><projectDescription><name>MemberManagement</name><comment></comment><projects><project>PRJ1</project><project>PRJ2</project><project>PRJ3</project><project>PRJ4</project></projects><buildSpec><buildCommand><name>org.eclipse.jdt.core.javabuilder</name><arguments></arguments></buildCommand></buildSpec><natures><nature>org.eclipse.jdt.core.javanature</nature></natures></projectDescription>使用XPath快速找到节点project.public static void main(String[] args){SAXReader reader = new SAXReader();try{Document doc = reader.read(new File("sample.xml"));List projects=doc.selectNodes("/projectDescription/projects/project"); Iterator it=projects.iterator();while(it.hasNext()){Element elm=(Element)it.next();System.out.println(elm.getText()); }}catch(Exception ex){ex.printStackTrace();}}。

Dom4j使用方法

Dom4j使用方法

Dom4j 解析XML 使用方法
1、下载Dom4j
下载这个文件到官网找几乎不可能找到,不信可以试试。

大家可以到如下地址下载:/projects/dom4j/files/dom4j-2.0.0-ALPHA-2/
进入网址后可以看到网页有以上三个jar文件可以下载,当然你可以一个个下载,也可以点击这个链接(安装Ctrl键)Download dom4j-1.6.1.zip (11.7 MB) 进行下载。

2、配置
下载后我们可以得到dom4j-1.6.1.zip 的压缩文件。

在这一堆文件中把dom4j-1.6.1.jar解压下来。

接着把它加载到项目。

下面以eclipse为例
选择你要加载的项目,右击Build Path --- Configure~~~ 如图
在弹出的对话框中,点击Add External JARs~~~
按路径找到你刚才解压的文件点击打开,最后退出点击OK就行了。

3、使用
创建一个xml文件
新建class文件,文件名为:Dom4j.java 这个文件可以让我们创建一个基本的xml。

Dom4jTest.jav a
(红色方块点击可以获得源码)
读取xml文件
Dom4jTest2.jav a
更多内容可以发生邮件baaio@。

Dom4J入门学习

Dom4J入门学习

DOM4J实例教程DOM4J是一个Java 的XML API,用来读写XML文件十分的方便,如果大家对DOM4j 还是不太了解,可以看一下百度百科里的解释:/view/1460716.htm?fr=ala0_1_1当然也可以去官网了解一下:/,/第一个网址内容乱七八糟,所以就不要进去了,第二个网址还好一点,不过都是英文的。

其实,学习开源最好的方法就是去网上找一个实例,然后试着在自己的电脑上跑起来,之后再开始学习代码,当然,首先要下载工共:/projects/dom4j/files/这个网址就是上边的官网的下载地址。

下载的是这个文件:dom4j-1.6.1.zip下边就以一个实例来学习DOM4J,这个例子是我在网上找到的,感觉十分不错,我希望能一步步更细一点,因为当时拷过去的时候,花了好大功夫才运行正确的,原来还有些细节问题要处理,下边给出原文的链接:/blog/169842这个例子共写了五个操作XML的函数,第一个是创建XML文件,通过从根节点(Root)开始添加元素(Element)和属性(Attribute);第二个方法是修改XML文件,包括添加节点,修改节点,删除节点;第二个方法是格式化XML文件,包括格式化编码和输出;第四个方法是通过传递几个数组来批量添加XML的节点,并创建文件;第五个方法是获取XML的某些元素。

本实例基本涵盖了XML的基本操作,现在开始实例。

首先打开Eclipse创建一个新项目,然后将dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar(在/lib 文件夹下边可以找到)这两个jar包拷贝到项目文件夹下边,第一个是dom4j的Jar包,第二个是他所依赖的一个包,当然还有起来依赖的包,由于这个实例不需要就不拷了。

都可以在我们下载的工具文件夹中找到,选中两个Jar包,右键选择Build Path->Add to Build Path;新建一个类名称为getDoc.java,他的源码如下:packagecom.whuid.spider.rss.get;importjava.io.File;import java.io.*;importjava.util.*;importjava.util.List;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.dom4j.DocumentException;public class getDoc {publicgetDoc() {}/*** 建立一个XML文档,文档名由输入参数决定* @param filename 需建立的文件名* @return 返回操作结果, 0表失败, 1表成功*/publicintcreateXMLFile(String filename) {/** 返回操作结果, 0表失败, 1表成功*/intreturnValue = 0;/** 建立document对象*/Document document = DocumentHelper.createDocument();/** 建立XML文档的根dates */Element booksElement = document.addElement("dates");/** 加入一行注释*/booksElement.addComment("This is a test workDate,2010.07.29");/** 加入第一个workday节点*/Element bookElement = booksElement.addElement("workday");/** 加入day节点*/Element titleElement = bookElement.addElement("day");/** 设置属性*/titleElement.addAttribute("flag", "yes");/** 为title设置内容*/titleElement.setText("2004-11-16");/** 类似的完成后两个book */bookElement = booksElement.addElement("book");bookElement.addAttribute("show","yes");titleElement = bookElement.addElement("title");titleElement.setText("LuceneStuding");bookElement = booksElement.addElement("book");bookElement.addAttribute("show","no");titleElement = bookElement.addElement("title");titleElement.setText("Lucene in Action");/** 加入owner节点*/Element ownerElement = booksElement.addElement("owner"); ownerElement.setText("O'Reilly");Element ownerElement2 =booksElement.addElement("owner2"); ownerElement2.setText("1'Reilly");try {/** 将document中的内容写入文件中*/XMLWriter writer = new XMLWriter(new FileWriter(newFile(filename)));writer.write(document);writer.close();/** 执行成功,需返回1 */returnValue = 1;}catch (Exception ex) {ex.printStackTrace();}returnreturnValue;}/*** 修改XML文件中内容,并另存为一个新文件* 重点掌握dom4j中如何添加节点,修改节点,删除节点* @param filename 修改对象文件* @paramnewfilename修改后另存为该文件* @return 返回操作结果, 0表失败, 1表成功*/publicintModiXMLFile(String filename, String newfilename) { intreturnValue = 0;try {SAXReadersaxReader = new SAXReader();Document document = saxReader.read(new FileReader(new File(filename)));/** 修改内容之一: 如果book节点中show参数的内容为yes,则修改成no *//** 先用xpath查找对象*/List list = document.selectNodes("/dates/workday/day/@flag");Iterator iter = list.iterator();while (iter.hasNext()) {Attribute attribute = (Attribute)iter.next();if(attribute.getV alue().equals("yes")) {attribute.setValue("no");}}/*** 修改内容之二:* 并在book节点中加入price节点,price节点的内容为120,还为price节点添加一个参数"单位"*/list = document.selectNodes("/dates/book");iter = list.iterator();while (iter.hasNext()) {Element bookElement = (Element) iter.next();//ownerElement.setText("Tshinghua");Element priceElement = bookElement.addElement("price");priceElement.setText("120");priceElement.addAttribute("单位", "人民币");}/** 修改内容之三: 若day内容为2004-11-16,则将属性falg设为false */list = document.selectNodes("/dates/workday");iter = list.iterator();while (iter.hasNext()) {Element workdayElement = (Element) iter.next();Iterator iterator = workdayElement.elementIterator("day");while (iterator.hasNext()) {Element dayElement = (Element) iterator.next(); if (dayElement.getText().equals("2004-11-16")) {List list1 = dayElement.attributes();Iterator iter1 = list1.iterator();while (iter1.hasNext()) {Attribute attribute = (Attribute) iter1.next();attribute.setValue("false");}}}}try {/** 将document中的内容写入文件中*/XMLWriter writer = new XMLWriter(new FileWriter(new File(newfilename)));writer.write(document);writer.close();/** 执行成功,需返回1 */returnValue = 1;}catch (Exception ex) {ex.printStackTrace();}}catch (Exception ex) {ex.printStackTrace();}returnreturnValue;}/*** 格式化XML文档,并解决中文问题* @param filename* @return*/publicintformatXMLFile(String filename) {intreturnValue = 0;try {SAXReadersaxReader = new SAXReader();Document document = saxReader.read(new FileReader(new File(filename)));XMLWriter output = null;/** 格式化输出,类型IE浏览一样*/OutputFormat format = OutputFormat.createPrettyPrint();/** 指定XML字符集编码*/format.setEncoding("utf-8");output = new XMLWriter(new FileWriter(new File(filename)), format);output.write(document);output.close();/** 执行成功,需返回1 */returnValue = 1;}catch (Exception ex) {ex.printStackTrace();}returnreturnValue;}/*** create one XML of file* @param holiday String[]* @param workday String[]* @param filename String filename OF XML*/public void createXML(String[] holiday,String[] workday, String filename) {Document document = DocumentHelper.createDocument();Element booksElement = document.addElement("dates");for (int i = 0; i <holiday.length; i++) {Element bookElement = booksElement.addElement("holiday"); bookElement.addAttribute("flag", "yes");bookElement.setText(holiday[i]);}for (int i = 0; i <workday.length; i++) {Element bookElement = booksElement.addElement("holiday"); bookElement.addAttribute("flag", "no");bookElement.setText(workday[i]);}try {XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));writer.write(document);writer.close();}catch (Exception ex) {ex.printStackTrace();}}publicHashMapgetXMLElement(String filename) throws FileNotFoundException,DocumentException {HashMaphs=new HashMap();SAXReadersaxReader = new SAXReader();Document document = saxReader.read(new FileReader(new File(filename)));Element root=document.getRootElement();List list=root.elements("holiday");if(list.isEmpty()){return null;}else{Iterator it=list.iterator();while(it.hasNext()){Element holiday=(Element)it.next();hs.put(holiday.getTextTrim(),holiday.attribute("flag").getValue());}returnhs;}}public static void main(String[] args)throws FileNotFoundException,DocumentException {getDocgd=new getDoc();/*测试1*/int a=gd.createXMLFile("test.xml");System.out.println(a);/*测试2*///int b=gd.ModiXMLFile("test.xml", "newtest.xml");//System.out.println(b);/*测试3*///int c=gd.formatXMLFile("newtest.xml");//System.out.println(c);/*测试4*///String[] str1={"1","2","3","4"};//String[] str2={"a","b","c","d"};//gd.createXML(str1, str2, "create.xml");//gd.formatXMLFile("create.xml");/*测试5*///HashMap hash=new HashMap();//hash=gd.getXMLElement("create.xml");//String hashStr=hash.toString();//System.out.println(hashStr);}}上边的main方法是我写的测试的方法,请从测试1开始依次打开测试,生成的xml文档在后边是有用的,五个测试分别测试五个函数,第一个测试创建了一个test.xml的文件,第二个测试修改test.xml文件并保存为一个新的newtest.xml文件,第三个测试用来格式化newtest.xml文件,大家运行后就知道格式化的含义了,第四个测试是通过传递两个数组创建一个create.xml文件,第五个测试是从create.xml文件中取出一些属性给一个hashMap,然后输出这个hashmap。

dom4j使用方法详解

dom4j使用方法详解

dom4j使⽤⽅法详解本⽂先做知识点的简单介绍,最后附完整案例。

⼀、解析XML⽂件1public class Foo {2//url为XML⽂档地址3//⾃⼰封装了⼀个⼯具类返回解析完成的document4public Document parse(URL url) throws DocumentException {5 SAXReader reader = new SAXReader();6 Document document = reader.read(url);7return document;8 }9 }⼆、利⽤JAVA的iterator来导航⽂档(遍历⽂档)public void bar(Document document) throws DocumentException {Element root = document.getRootElement();// 从根节点开始遍历for (Iterator<Element> it = root.elementIterator(); it.hasNext();) {Element element = it.next();// do something}// 从根节点的名为“foo”的⼦节点开始遍历for (Iterator<Element> it = root.elementIterator("foo"); it.hasNext();) {Element foo = it.next();// do something}// 遍历根节点的属性for (Iterator<Attribute> it = root.attributeIterator(); it.hasNext();) {Attribute attribute = it.next();// do something}}三、在<dom4j>中,可以在Document或树中的任何节点(例如Attribute,Element)上计算XPath表达式。

dom4j asxml的用法

dom4j asxml的用法
// 创建根元素
Element root = document.addElement("root");
// 添加子素和属性
Element childElement = root.addElement("child");
childElement.addAttribute("name", "Child Element");
dom4j asxml的用法
dom4j是一个用于处理XML文档的Java开发包。它提供了一系列简单又强大的API,可以帮助开发人员轻松地解析、操作和生成XML文档。
而其中的asXML()方法是dom4j中一个非常有用的方法。它可以将一个dom4j的Document对象转换为一个XML字符串,方便我们进行数据的存储、传输或者显示。
}
}
```
上述代码首先创建了一个Document对象,并在其中创建了一个根元素和一个子元素。然后,通过调用asXML()方法将Document对象转换为一个XML字符串。最后,将转换结果打印到控制台。
输出结果如下:
```
<?xml version="1.0" encoding="UTF-8"?>
<root>
<child name="Child Element">This is a child element.</child>
</root>
```
可以看到,asXML()方法将Document对象转换为了一个符合XML规范的字符串。我们可以根据需要进一步处理该字符串,如保存到文件中或通过网络进行传输。

dom4j解析xml

dom4j解析xml

dom4j解析xml现在有很多⼯具包可以解析xml⽂件,但是dom4j⽆疑是其中较为简单的⼀种,下⾯就⽤⼀个例⼦来实际操作⼀下:⾸先得导⼊dom4j.jar这个夹包(⽹上⼀搜⼀⼤⽚)1.随便在⼀个地⽅建⽴⼀个user.xml⽂件,我这⼉是建⽴在d盘根⽬录下:1. <?xml version="1.0" encoding="UTF-8"?>2.3. <users>4. <user username="lisi" password="123"/>5. <user username="张三" password="123"/>6. <user username="zhangsan" password="123"/>7.8. </users><?xml version="1.0" encoding="UTF-8"?><users><user username="lisi" password="123"/><user username="张三" password="123"/><user username="zhangsan" password="123"/></users>2.对该⽂件进⾏模拟查询⽤户(按姓名查询)和添加⽤户:1. package com.easyteam.dao;2.3. import java.io.FileNotFoundException;4. import java.io.FileOutputStream;5. import java.io.IOException;6. import java.io.OutputStream;7. import java.io.OutputStreamWriter;8. import java.io.UnsupportedEncodingException;9.10. import org.dom4j.Document;11. import org.dom4j.DocumentException;12. import org.dom4j.Element;13. import org.dom4j.io.OutputFormat;14. import org.dom4j.io.SAXReader;15. import org.dom4j.io.XMLWriter;16.17. import er;18.19.20. public class Userdao {21.22. String path="d://user.xml";23.24. public User findByName(String username){25. SAXReader red=new SAXReader();//创建解析器26. try {27. Document doc=red.read(path);//得到documet对象28. Element el=(Element) doc.selectSingleNode("//user[@username='"+username+"']");//查询条件,其中//表⽰⽆限深度查询,[]中放⼊是查询条件29. if(el==null) return null;30. String attUsername=el.attributeValue("username");//得到username这个属性的值31. String attPassword=el.attributeValue("password");32. User user=new User();33. user.setUsername(attUsername);34. user.setPassword(attPassword);35. return user;36. } catch (DocumentException e) {37. throw new RuntimeException(e);38. }39. }40. public void addUser(User user){41.42. SAXReader red=new SAXReader();43. try {44. Document doc = red.read(path);45. Element attroot=doc.getRootElement();//得到根节点46. Element userel=attroot.addElement("user");//添加节点47. userel.addAttribute("username", user.getUsername());//给新节点赋值48. userel.addAttribute("password", user.getPassword());49.50. OutputFormat format=new OutputFormat("\t", true);//设置格式51. format.setTrimText(true);//清除原有格式52. XMLWriter writer;53. try {54. writer=new XMLWriter(new OutputStreamWriter(new FileOutputStream(path),"utf-8"),format);//实例化55. writer.write(doc);//保存56. writer.close();57. } catch (Exception e) {58. throw new RuntimeException(e);59. }60.61. } catch (DocumentException e) {62. throw new RuntimeException(e);63. }64. }65. }3.测试类:1. package com.easyteam.test;2.3. import org.junit.Test;4.5. import erdao;6. import er;7.8.9. public class UserDaoTest {10. @Test11.12. public void testfindByName(){13. Userdao dao=new Userdao();14. User user= dao.findByName("lisi");15. System.out.println(user);16.17. }18. @Test19. public void testaddUser(){20. Userdao dao=new Userdao();21. User user=new User();22. user.setUsername("张三");23. user.setPassword("123");24. dao.addUser(user);25.26.27.28. }29. }。

Dom4j完整教程,操作XML教程

Dom4j完整教程,操作XML教程

Dom4j完整教程,操作XML教程⽬录1、DOM4J简介2、XML⽂档操作12.1、读取XML⽂档:2.2、获取根节点2.3、. 新增⼀个节点以及其下的⼦节点与数据2.4、写⼊XML⽂件2. 5、遍历xml节点2.6、创建xml⽂件2.7、修改节点属性2.8、删除节点2、XML⽂档操作22.1、Document对象相关1、读取XML⽂件,获得document对象.2、解析XML形式的⽂本,得到document对象.3、主动创建document对象.2.2、节点相关1、获取⽂档的根节点.2、取得某节点的单个⼦节点.3.取得节点的⽂字4.取得某节点下指定名称的所有节点并进⾏遍历.5.对某节点下的所有⼦节点进⾏遍历.6.在某节点下添加⼦节点.7.设置节点⽂字.8.删除某节点.9.添加⼀个CDATA节点.2.3、属性相关.1.取得节点的指定的属性2.取得属性的⽂字3.遍历某节点的所有属性4.设置某节点的属性和⽂字.5.设置属性的⽂字6.删除某属性2.4、将⽂档写⼊XML⽂件.1.⽂档中全为英⽂,不设置编码,直接写⼊.2.⽂档中含有中⽂,设置编码格式再写⼊.2.5、字符串与XML的转换1.将字符串转化为XML2.将⽂档或节点的XML转化为字符串.3、dom4j的事件处理模型涉及的类和接⼝:3.1、类:SAXReader3.2、接⼝ElementHandler3.3、Element类3.4、类DocumentHelper4、通过xpath查找指定的节点4.1、 xpath语法1、选取节点2、谓语(Predicates)3、选取未知节点4、选取若⼲路径5、XPath 轴6、路径7、XPath 运算符1、DOM4J简介DOM4J是 出品的⼀个开源 XML 解析包。

DOM4J应⽤于 Java 平台,采⽤了 Java 集合框架并完全⽀持 DOM,SAX 和 JAXP。

DOM4J 使⽤起来⾮常简单。

只要你了解基本的 XML-DOM 模型,就能使⽤。

Dom4j 1.6.1 操作XML初始教程

Dom4j 1.6.1 操作XML初始教程

Dom4j 1.6.1 初始教程Dom4j是什么DD?dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的。

dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。

在IBM developerWorks上面可以找到一篇文章,对主流的Java XML API进行的性能、功能和易用性的评测,dom4j无论在那个方面都是非常出色的。

如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,特别值得一提的是连Sun的JAXM也在用dom4j。

这是必须使用的jar包,Hibernate用它来读写配置文件dom4j需要导入dom4j-full.jar包.Dom4j家庭成员主要API都在org.dom4j这个包里定义:1.Attribute Attribute定义了XML的属性2.Branch Branch为能够包含子节点的节点如XML元素(Element)和文档(Docuemnts)定义了一个公共的行为,3.CDATA CDATA 定义了XML CDATA 区域4.CharacterData CharacterData是一个标识借口,标识基于字符的节点。

如CDATA,Comment, Text.5. Comment Comment 定义了XML注释的行为6. Document 定义了XML文档7.DocumentType DocumentType 定义XML DOCTYPE声明8. Element Element定义XML 元素9. ElementHandler ElementHandler定义了Element 对象的处理器10. ElementPath 被ElementHandler 使用,用于取得当前正在处理的路径层次信息11. Entity Entity定义XML entity12. Node Node为所有的dom4j中XML节点定义了多态行为13. NodeFilter NodeFilter 定义了在dom4j节点中产生的一个滤镜或谓词的行为(predicate)14. ProcessingInstruction ProcessingInstruction 定义XML 处理指令.15. Text Text 定义XML 文本节点.16. Visitor Visitor 用于实现Visitor模式.17. XPath XPath 在分析一个字符串后会提供一个XPath 表达式Dom4j如何干活?1.利用dom4j创建一个XML文件:view plaincopy to clipboardprint?package com.xml;import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class CreateXML {public static void main(String[] args) {XMLWriter writer = null;try {// 1.document构建器Document doc = DocumentHelper.createDocument();// 2.添加元素(根)Element students = doc.addElement("students");Element student1 = students.addElement("student");// 添加属性;student1.addAttribute("stuno", "s001");// 添加子元素student1.addElement("stuname").setText("刘光蓝");student1.addElement("stusex").setText("男");student1.addElement("stuage").setText("25");//设置输出格式OutputFormat format=OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");writer = new XMLWriter(new FileWrite("d:/student.xml"),format);writer.write(doc);System.out.println("生成XML成功!");} catch (Exception e) {e.printStackTrace();} finally {try {writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}package com.xml;import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;public class CreateXML {public static void main(String[] args) {XMLWriter writer = null;try {// 1.document构建器Document doc = DocumentHelper.createDocument();// 2.添加元素(根)Element students = doc.addElement("students");Element student1 = students.addElement("student");// 添加属性;student1.addAttribute("stuno", "s001");// 添加子元素student1.addElement("stuname").setText("刘光蓝");student1.addElement("stusex").setText("男");student1.addElement("stuage").setText("25");//设置输出格式OutputFormat format=OutputFormat.createPrettyPrint();format.setEncoding("UTF-8");writer = new XMLWriter(new FileWrite("d:/student.xml"),format); writer.write(doc);System.out.println("生成XML成功!");} catch (Exception e) {e.printStackTrace();} finally {try {writer.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}}2.利用dom4j读取一个XML文件:view plaincopy to clipboardprint?01.package com.xml;02.03.import java.io.File;04.import java.util.List;05.06.import org.dom4j.Document;07.import org.dom4j.Element;08.import org.dom4j.Node;09.import org.dom4j.io.SAXReader;10.11.public class ReaderXML {12. public static void main(String[] args) {13. try {14. SAXReader saxReader=new SAXReader();15. Document doc=saxReader.read(new File("d:/student.xml"));16. //利用XPath来访问元素,属性17. // /students/student[1] 指定某个元素18. // /students/student/@stuno指定某个属性19. // /students/student[@stuno='s002']做判断20. List<Node> data=doc.selectNodes("/students/student");21. for(Node node:data){22. //node.asXML() 以字符串的格式打印XML23. if("Element".equals(node.getNodeTypeName())){24. Element element=(Element)node;25. //读取属性值26. System.out.println(element.attributeValue("stuno"));27. //读取子元素文本值28. System.out.println(element.elementText("stuname"));29. System.out.println(element.elementText("stusex"));30. System.out.println(element.elementText("stuage")+"\n");31. }32. }33. } catch (Exception e) {34. e.printStackTrace();35. }36. }37.38.}package com.xml;import java.io.File;import java.util.List;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;public class ReaderXML {public static void main(String[] args) {try {SAXReader saxReader=new SAXReader();Document doc=saxReader.read(new File("d:/student.xml"));//利用XPath来访问元素,属性// /students/student[1] 指定某个元素// /students/student/@stuno指定某个属性// /students/student[@stuno='s002']做判断List<Node> data=doc.selectNodes("/students/student");for(Node node:data){//node.asXML() 以字符串的格式打印XMLif("Element".equals(node.getNodeTypeName())){Element element=(Element)node;//读取属性值System.out.println(element.attributeValue("stuno"));//读取子元素文本值System.out.println(element.elementText("stuname"));System.out.println(element.elementText("stusex"));System.out.println(element.elementText("stuage")+"\n");}}} catch (Exception e) {e.printStackTrace();}}}3.利用dom4j修改一个XML文件:view plaincopy to clipboardprint?01.package com.xml;02.03.import java.io.File;04.import java.io.FileWriter;05.import java.io.IOException;06.import java.util.List;07.08.import org.dom4j.Document;09.import org.dom4j.Element;10.import org.dom4j.Node;11.import org.dom4j.io.OutputFormat;12.import org.dom4j.io.SAXReader;13.import org.dom4j.io.XMLWriter;14.15.public class UpdateXMLData {16.17. public static void main(String[] args) {18. XMLWriter writer = null;19. try {20. SAXReader saxReader = new SAXReader();21. Document doc = saxReader .read(new File("d:/student.xml"));22. List<Node> data = doc23. .selectNodes("/students/student[@stuno='s002']");24. for (Node node : data) {25. if ("Element".equals(node.getNodeTypeName())) {26. Element temp = (Element) node;27. //修改student的stuno属性值28. temp.setAttributeValue("stuno", "stu002");29. }30. }31. OutputFormat format = OutputFormat.createPrettyPrint();32. format.setEncoding("UTF-8");33. writer = new XMLWriter(new FileWriter("d:/student.xml"), format);34. writer.write(doc);35. System.out.println("修改成功!");36. } catch (Exception e) {37. e.printStackTrace();38. } finally {39. try {40. writer.close();41. } catch (IOException e) {42. // TODO Auto-generated catch block43. e.printStackTrace();44. }45. }46.47. }48.49.}。

XML解析器——Dom4j

XML解析器——Dom4j

XML解析器——Dom4j⼀、Dom4j 技术概述 先是 Jdom 在 dom 基础上进⾏了封装,⽽ dom4j ⼜对 jdom 进⾏了封装。

DOM4J是⼀个开源的,基于Java的库来解析XML⽂档,它具有⾼度的灵活性,⾼性能和内存效率的API。

这是java的优化,使⽤Java集合像列表和数组。

它可以使⽤DOM,SAX,XPath和XSLT。

它解析⼤型XML⽂档时具有极低的内存占⽤。

⼆、DOM4j 类库 1、类库 官⽹下载需要的 jar 包: 2、使⽤ dom4j 的 jar包: docs 是⽂档⽬录: 在docs ⾥⾯找到 index.html ,快速⼊门三、DOM4j 解析步骤 步骤:1、先加载 xml ⽂件创建 Document 对象2、通过 Document 对象拿到根元素对象3、通过根元素.elelemts(标签名); 可以返回⼀个集合,这个集合⾥放着。

所有你指定的标签名的元素对象4、获取需要操作的元素,进⾏相应的操作 XML ⽂件:1 <?xml version="1.0" encoding="UTF-8"?>2 <books>3 <book sn="123">4 <name>Java</name>5 <price>9.9</price>6 <author>⽼张</author>7 </book>8 <book sn="456">9 <name>Python</name>10 <price>99.99</price>11 <author>⽼李</author>12 </book>13 </books> 测试解析⽂件:1 /*2 * dom4j 获取 Documet 对象3 */4 @Test5 public void getDocument() throws DocumentException {6 // 要创建⼀个 Document 对象,需要我们先创建⼀个 SAXReader 对象7 SAXReader reader = new SAXReader();8 // 这个对象⽤于读取 xml ⽂件,然后返回⼀个 Document。

dom4j使用说明

dom4j使用说明
writer.write(document树);
d 如果把文件输出到硬盘上
需要一个文件输出流
默认的输出方式,无格式
XMLWriter writer = new XMLWriter(new FileOutPutSream("文件路径"));
如果输出硬盘上的文件有格式的话,自定一个个事
//内部属性,第一个属性是,和文本框的距离,第二个属性是:换行
OutPutStreamFormat format = new OutPutStreamFormat(" ",true);
输出到硬盘
writer.write(document树);
获取硬盘上xml文件的内容:
1、新建一个阅读器
SAXReader reader = new SAXReader();
//读取文件,直接读成一棵document树
1、导入jar包
2、a 首先建一个根元素
Element rootElement = DocumentHelper.createElement("java刘班");
b 接下来建一个document树
Doucument doucument = DocumentHelper.createDocument(rootElement);
Element element = (Element)iter.next();
//获取里面的内容
//获取属性值
String attribute = element.getAttribute("属性名称");
如果没有这样的属性名称直接返回null
c 在根节点上加入一个元素

dom4j简单使用

dom4j简单使用

* @return Document
*
org.dom4j.Document
* @throws DocumentException
*/
public static Document getDocument(String path) throws DocumentException, URISyntaxException {
String[] splits = src.split("\\."); String className = splits[0]; String filedName = splits[1];
//。。。 } }
} catch (Exception e) { LOG.error("", e);
}
特别要注意,上面的Element.selectNodes方法,用到了XPath的语法,dom4j.jar里面是没有包含这个功能的,需要添加下面这个jar包 (maven工程,非maven工程需要自己去下载),不然会报错。
try { Supplier obj = (Supplier)params.get("obj");
Document doc = XmlUtil.getDocument("excel\\supplier-import.xml"); Element root = doc.getRootElement();
<!-- https:///artifact/jaxen/jaxen --> <dependency>
<groupId>jaxen</groupId> <artifactId>jaxen</artifactId> <version>1.1.6</version> </dependency>

DOM4J介绍与代码示例

DOM4J介绍与代码示例

DOM4J介绍与代码示例2009-01-13 17:04:03标签:DOM4J原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。

否则将追究法律责任。

/113473/126310v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} st1\:*{behavior:url(#ieooui) }DOM4J是出品的一个开源XML解析包。

Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。

它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。

DOM4J下载jar包:/dom4j/dom4j-1.6.1.jarJAXEN(对XPath的支持):/jaxen/distributions/jaxen-1.1.1.zip1.DOM4J主要接口DOM4J主要接口都在org.dom4j这个包里定义。

-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文档下面是用dom4j创建上述文档,通过两种方式创建,一种是调用dom4j提供的方法,一种是通过字符串转换。

DOM4J用法示例

DOM4J用法示例

dom4j操作(解析)xml示例不管怎么使用,第一件事情,先引入dom4j-1.6.1.jar和jaxen-1.1-beta-6.jar!!示例1:解析XML,访问根节点,子节点的名称和值 (1)示例2:解析XML,访问节点的属性 (3)示例3:通过xpath解析xml,需要用到jaxen-1.1-beta-6.jar (5)示例4:利用dom4j创建和写入xml文件 (7)示例5:利用dom4j创建和写入xml文件,并且利用XMLWriter进行格式化输出 (8)示例1:解析XML,访问根节点,子节点的名称和值/emp.xml文件<?xml version="1.0"encoding="utf-8"?><ROWDATA><ROW><EMPNO>7369</EMPNO><ENAME>SMITH</ENAME><HIREDATE>1980-12-17</HIREDATE><SAL>900.00</SAL></ROW><ROW><EMPNO>7499</EMPNO><ENAME>ALLEN</ENAME><HIREDATE>1981-2-20</HIREDATE><SAL>1600.00</SAL></ROW></ROWDATA>Dom4jServlet1.java文件import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.io.SAXReader;/*** 解析XML,访问根节点,子节点的名称和值* @author Administrator*/public class Dom4jServlet1 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//XML文档URLString url = this.getServletContext().getRealPath("/emp.xml");//输入流对象SAXReader reader = new SAXReader();//XML文档对象Document document = null;try {document = reader.read(new File(url));} catch (DocumentException e) {System.out.println(url + "文件不存在!");return;}//获得根节点元素Element root = document.getRootElement();//输出元素的个数System.out.println("共有" + root.nodeCount() + "条数据");//获得所有的下一级子节点List<Element> list = root.elements();//遍历子节点for (Element row : list) {List<Element> cols = row.elements();for (Element col : cols) {System.out.println(col.getName() + "=" + col.getStringValue());}System.out.println("------------------");}}}执行Servlet之后输出结果:共有29条数据EMPNO=7369ENAME=SMITHHIREDATE=1980-12-17SAL=900.00------------------EMPNO=7499ENAME=ALLENHIREDATE=1981-2-20SAL=1600.00……示例2:解析XML,访问节点的属性/config.xml文件<?xml version="1.0"encoding="UTF-8"?><hibernate-mapping><class name="com.news.po.Admin"table="ADMIN"><id name="id"type="ng.Integer"><generator class="increment"/></id><property name="adminname"type="ng.String"/><property name="adminpwd"type="ng.String"/></class></hibernate-mapping>Dom4jServlet2.java文件import java.io.*;import javax.servlet.*;import javax.servlet.http.*;import org.dom4j.*;import org.dom4j.io.*;import java.util.*;/***解析XML,访问节点的属性*@author Administrator*/public class Dom4jServlet2 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//XML文档URLString url = this.getServletContext().getRealPath("/config.xml");//输入流对象SAXReader reader = new SAXReader();//文档对象Document document = null;try {document = reader.read(new File(url));} catch (DocumentException e) {System.out.println("文件不存在");return;}//获得根节点Element root = document.getRootElement();out.println("根标签:" + root.getName() + "<br>");//获得所有子节点集合List<Element> elements = root.elements();//遍历子节点for (Element e : elements) {out.println("子节点:" + e.getName() + "<br>");if (e.getName().equals("class")) {//获得属性集合List<Attribute> arrtibutes = e.attributes();//遍历属性for (Attribute a : arrtibutes) {out.println(a.getName() + "=" + a.getValue() + " ");}out.println("<br>");//获得所有子节点集合List<Element> elements2 = e.elements();//遍历子节点for (Element e2 : elements2) {out.println("子节点:" + e2.getName() + "<br>");//获得属性集合List<Attribute> arrtibutes2 = e2.attributes();//遍历属性for (Attribute a : arrtibutes2) {out.println(a.getName() + "=" + a.getValue() + " ");}out.println("<br>");}}}out.close();}}网页输出结果:根标签:hibernate-mapping子节点:classname=com.news.po.Admin table=ADMIN子节点:idname=id type=ng.Integer子节点:propertyname=adminname type=ng.String子节点:propertyname=adminpwd type=ng.String示例3:通过xpath解析xml,需要用到jaxen-1.1-beta-6.jar/config.xml文件<?xml version="1.0"encoding="UTF-8"?><hibernate-mapping><class name="com.news.po.Admin"table="ADMIN"><id name="id"type="ng.Integer"><generator class="increment"/></id><property name="adminname"type="ng.String"/><property name="adminpwd"type="ng.String"/></class></hibernate-mapping>Dom4jServlet3.java文件import java.io.File;import java.io.IOException;import java.io.PrintWriter;import java.util.List;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.SAXReader;/***通过xpath解析xml,需要用到jaxen-1.1-beta-6.jar*@author Administrator*/public class Dom4jServlet3 extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");PrintWriter out = response.getWriter();//XML文档URLString url = this.getServletContext().getRealPath("/config.xml");//输入流SAXReader reader = new SAXReader();//文档对象Document document = null;try {document = reader.read(new File(url));} catch (DocumentException e) {e.printStackTrace();return;}//用xpath直接定位到某个节点,返回这个节点的集合List<Node> list =document.selectNodes("//hibernate-mapping/class/property");//遍历节点for (Node node : list) {out.println(node.getName() + "<br>");//返回这个节点name属性的值String value = node.valueOf("@name");out.println("name=" + value + "<br>");}//获得单个节点,多个同名节点只拿第一个Node node = document.selectSingleNode("//class");out.println(node.getName());}}网页输出结果:propertyname=adminnamepropertyname=adminpwdclass示例4:利用dom4j创建和写入xml文件Dom4j4.java文件import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;/***利用dom4j创建和写入xml文件*/public class Dom4j4 {public static void main(String[] args) throws IOException {// 文件输出流FileWriter fw = new FileWriter("e:\\student.xml");// 创建一个文档对象Document document = DocumentHelper.createDocument();// 加入根节点Element root = document.addElement("hibernate-mapping");// 加入子节点Element e1 = root.addElement("class");// 设置属性和属性值e1.addAttribute("name", "com.Student");e1.addAttribute("table", "student");// 用方法链加入子节点和属性Element e2 = e1.addElement("property").addAttribute("name", "sid") .addAttribute("column", "s_id");Element e3 = e1.addElement("property").addAttribute("name", "sname") .addAttribute("column", "s_name");// 生成xml文件document.write(fw);// 清除缓冲区fw.close();}}执行之后生成student.xml,但是没有格式:<?xml version="1.0" encoding="UTF-8"?><hibernate-mapping><class name="com.Student" table="student"><property name="sid"column="s_id"/><property name="sname" column="s_name"/></class></hibernate-mapping>示例5:利用dom4j创建和写入xml文件,并且利用XMLWriter 进行格式化输出Dom4j5.java文件import java.io.FileWriter;import java.io.IOException;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.XMLWriter;/***利用dom4j创建和写入xml文件,并且利用XMLWriter进行格式化输出*/public class Dom4j5 {public static void main(String[] args) throws IOException {// 创建一个文档对象Document document = DocumentHelper.createDocument();// 加入根节点Element root = document.addElement("hibernate-mapping");// 加入子节点Element e1 = root.addElement("class");// 设置属性和属性值e1.addAttribute("name", "com.Student");e1.addAttribute("table", "student");// 用方法链加入子节点和属性Element e2 = e1.addElement("property").addAttribute("name", "sid") .addAttribute("column", "s_id");Element e3 = e1.addElement("property").addAttribute("name", "sname") .addAttribute("column", "s_name");//文件输出流FileWriter fw = new FileWriter("e:\\student.xml");//美化格式对象OutputFormat format = OutputFormat.createPrettyPrint();//带格式的输出流XMLWriter xw = new XMLWriter(fw,format);// 生成xml文件xw.write(document);// 清除缓冲区xw.close();}}执行之后生成student.xml,有格式:<?xml version="1.0" encoding="UTF-8"?><hibernate-mapping><class name="com.Student" table="student"><property name="sid" column="s_id"/><property name="sname" column="s_name"/> </class></hibernate-mapping>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
+" <ftp-user>cxl</ftp-user>\r\n"
+" <ftp-pwd>longshine</ftp-pwd>\r\n"
+" <!-- ftp最多尝试连接次数 -->\r\n"
+" <ftp-try>50</ftp-try>\r\n"
ex.printStackTrace();
}
return doc;
}
3、将Document对象保存为一个xml文件到本地
/**
* doc2XmlFile
* 将Document对象保存为一个xml文件到本地
s = out.toString("GB2312");
}catch(Exception ex)
{
ex.printStackTrace();
}
return s;
import java.io.FileWriter;
//工具包
import java.util.Iterator;
import java.util.List;
//dom4j包
import org.dom4j.Attribute;
import org.dom4j.Document;
* @return true:保存成功 flase:失败
* @param filename 保存的文件名
* @param str 需要保存的字符串
*/
public static boolean string2XmlFile(String str,String filename)
s = "<config>\r\n"
+" <ftp name='DongDian'>\r\n"
+" <ftp-host>127.0.0.1</ftp-host>\r\n"
+" <ftp-port>21</ftp-port>\r\n"
* load
* 载入一个xml文档
* @return 成功返回Document对象,失败返回null
* @param uri 文件路径
*/
public static Document load(String filename)
}
2、将符合XML格式的String 转化为XML Document
/**
* string2Document
* 将字符串转为Document
* @return
* @param s xml格式的字符串
*/
public static Document string2Document(String s)
}
7、演示手动创建一个Document,并保存为XML文件
/**
* 演示手动创建一个Document,并保存为XML文件
*/
public void xmlWriteDemoByDocument()
{
/** 建立document对象 */
Document document = DocumentHelper.createDocument();
/** 建立config根节点 */
Element configElement = document.addElement("config");
{
Document doc = null;
try
{
doc = DocumentHelper.parseText(s);
}catch(Exception ex)
{
return flag;
}
4、将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
/**
* string2XmlFile
* 将xml格式的字符串保存为本地文件,如果字符串格式不符合xml规则,则返回失败
}
catch (Exception ex){
ex.printStackTrace();
}
return document;
}
6、演示String保存为xml文件
Байду номын сангаас
/**
* xmlWriteDemoByString
/** ftp 属性配置 */
Element hostElement = ftpElement.addElement("ftp-host");
1、将XML文件的内容转化为String
/**
* doc2String
* 将xml文档内容转为String
* @return 字符串
* @param document
*/
public static String doc2String(Document document)
{
boolean flag = true;
try
{
Document doc = DocumentHelper.parseText(str);
flag = doc2XmlFile(doc,filename);
{
Document document = null;
try
{
SAXReader saxReader = new SAXReader();
document = saxReader.read(new File(filename));
/** 建立ftp节点 */
configElement.addComment("东电ftp配置");
Element ftpElement = configElement.addElement("ftp");
ftpElement.addAttribute("name","DongDian");
* 演示String保存为xml文件
*/
public void xmlWriteDemoByString()
{
String s = "";
/** xml格式标题 "<?xml version='1.0' encoding='GB2312'?>" 可以不用写*/
writer.close();
}catch(Exception ex)
{
flag = false;
ex.printStackTrace();
}
//将文件生成到classes文件夹所在的目录里
string2XmlFile(s,"xmlWriteDemoByString.xml");
//将文件生成到classes文件夹里
string2XmlFile(s,"classes/xmlWriteDemoByString.xml");
Java操作XML文件 dom4j 篇
在项目中,我们很多都用到了xml文件,无论是参数配置还是与其它系统的数据交互。
今天就来讲一下Java 中使用dom4j来操作XML文件。
我们需要引入的包:
//文件包
import java.io.ByteArrayOutputStream;
import java.io.File;
}catch (Exception ex)
{
flag = false;
ex.printStackTrace();
}
return flag;
}
5、载入一个xml文档
/**
format.setEncoding("GB2312");
XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);
writer.write(document);
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
OutputFormat format = new OutputFormat(" ", true, "GB2312");
XMLWriter writer = new XMLWriter(out, format);
writer.write(document);
+" <!-- ftp尝试连接延迟时间 -->\r\n"
+" <ftp-delay>10</ftp-delay>\r\n"
+" </ftp>\r\n"
+"</config>\r\n";
{
String s = "";
相关文档
最新文档