DOM4J解析XML
2015-05-29 20:31
387 查看
DOM4J是DOM4J出品的一个开源XML解析包。它可以读、写、导航、创建和修改XML文档。DOM4J应用于
Java 平台,采用了 Java
集合框架,并完全支持 DOM,SAX
和 JAXP。
使用Dom4j开发,需下载dom4j相应的jar文件。Dom4j的下载网址:http://sourceforge.net/projects/dom4j/files/dom4j/。我选择下载的是dom4j-1.6.1.zip,对其进行解压。在这里可以看到有docs帮助的文件夹,也有我们需要dom4j-1.6.1.jar文件。我们只需要把dom4j-1.6.1.jar文件构建到我们开发的项目中就可以使用dom4j开发了。
下面我们建立web程序,项目名称为得dom4jTest。这里需要将dom4j-1.6.1.jar拷贝到WEB-INF/lib中。下面是我对一些常用方法的整理:
(1)dom4j创建XML文件
(2)dom4j读取xml文件
(3)使用dom4j实现对字符串与xml的互相转化
(4)结点对象的一些属性和方法的整理
更多相关方法请参照dom4j提供的文档,下面的地址博客链接整理的也很全面,大家可以参考:/article/4988146.html。
Java 平台,采用了 Java
集合框架,并完全支持 DOM,SAX
和 JAXP。
使用Dom4j开发,需下载dom4j相应的jar文件。Dom4j的下载网址:http://sourceforge.net/projects/dom4j/files/dom4j/。我选择下载的是dom4j-1.6.1.zip,对其进行解压。在这里可以看到有docs帮助的文件夹,也有我们需要dom4j-1.6.1.jar文件。我们只需要把dom4j-1.6.1.jar文件构建到我们开发的项目中就可以使用dom4j开发了。
下面我们建立web程序,项目名称为得dom4jTest。这里需要将dom4j-1.6.1.jar拷贝到WEB-INF/lib中。下面是我对一些常用方法的整理:
(1)dom4j创建XML文件
<span style="font-size:12px;"> /** * dom4j创建xml文件 */ public void createXmlTest(){ //创建文档的根节点 Document document = DocumentHelper.createDocument(); //创建文档的根元素结点 Element root = document.addElement("person"); document.setRootElement(root); //给根节点添加属性 root.addAttribute("name", "people").addAttribute("id", "highLevel"); //给根节点添加孩子结点 Element elem1=root.addElement("expression"); elem1.addElement("name").addAttribute("nameNo", "1").addText("华子"); elem1.addElement("sex").addText("女"); Element elem2 =root.addElement("expression"); elem2.addElement("name").addAttribute("nameNo", "2").addText("洋洋"); elem2.addElement("sex").addText("男"); //把生成的xml文档放在硬盘上 true代表换行 OutputFormat format = new OutputFormat(" ",true); //设置编码格式 format.setEncoding("UTF-8"); try { XMLWriter xmlWriter = new XMLWriter(new FileOutputStream("person.xml"),format); xmlWriter.write(document); xmlWriter.close(); } catch (Exception e) { e.printStackTrace(); } }</span>
(2)dom4j读取xml文件
/** * dom4j读取xml文件 */ public void readXmlTest(){ File file = new File("src/dom4j/person.xml"); //注意文件的路径,如果报错对象为空,可能就是没有找到文件位置 SAXReader reader = new SAXReader(); Document doc; try { //读取xml文件 doc = reader.read(file); //获得根节点元素 Element root =doc.getRootElement(); //遍历根节点下的所有子节点元素 for (Iterator i =root.elementIterator();i.hasNext();) { Element element =(Element)i.next(); //输出每个子节点下的所有属性 for (Iterator attr = element.attributes().iterator(); attr.hasNext();) { Attribute attrElement = (Attribute) attr.next(); System.out.println("显示: "+attrElement.getName()+":" + attrElement.getValue()); } } } catch (DocumentException e) { e.printStackTrace(); } }
(3)使用dom4j实现对字符串与xml的互相转化
/** * 利用dom4j将字符串转化为xml */ public void stringToXmlTest(){ String text = "<person><name>huazi</name><sex>girl</sex></person>"; try { //将字符串解析为xml Document doc = DocumentHelper.parseText(text); // 获取根节点 Element rootElt = doc.getRootElement(); // 拿到根节点的名称 System.out.println("根节点:" + rootElt.getName()); } catch (DocumentException e1) { e1.printStackTrace(); } } /** * 利用dom4j将xml转化为字符串 */ public void xmlToStringTest(){ File file = new File("src/dom4j/person.xml"); SAXReader reader = new SAXReader(); try { //读取xml文件 Document doc = reader.read(file); //获取根节点元素 Element root =doc.getRootElement(); //将XML文件转化为字符串 String xmlToString = doc.asXML(); System.out.println(xmlToString); //根元素标签转换的内容 String rootXMLText =root.asXML(); System.out.println(rootXMLText); //获取子节点元素标签内的内容 Element e =root.element("子标签元素"); System.out.println(e.asXML()); } catch (DocumentException e1) { e1.printStackTrace(); } }
(4)结点对象的一些属性和方法的整理
//取得某节点下的某属性 Element root=document.getRootElement(); //属性名name Attribute attribute=root.attribute("id"); //取得属性的文字 String text=attribute.getText(); //删除某属性 Attribute attribute=root.attribute("size"); root.remove(attribute); //遍历某节点的所有属性 Element root=document.getRootElement(); for(Iterator it=root.attributeIterator();it.hasNext();){ Attribute attribute = (Attribute) it.next(); String text=attribute.getText(); System.out.println(text); } //设置某节点的属性和文字. newMemberElm.addAttribute("name", "huazi"); //设置属性的文字 Attribute attribute=root.attribute("name"); attribute.setText("huazi");
更多相关方法请参照dom4j提供的文档,下面的地址博客链接整理的也很全面,大家可以参考:/article/4988146.html。
相关文章推荐
- Linux 信号机制(三)
- Android学习笔记--自定义Adapter的使用
- 面向无连接的传输UDP协议
- 发现微信支付bug
- iOS开发学习第七课——结构体的定义、声明和应用
- poj2400--Supervisor, Supervisee(KM算法)
- oracle数据类型详解
- 考科一的旅程
- 关于linux中的动态连接
- iOS:各release版本的特性(持续更新)
- android自定义View之曲线图
- 第一次进入CSDN,或许新的生活就要开始了
- 支付宝担保交易接口
- CCAnimation::setDelayPerUnit(float v); // 设置两帧之间的时间间隔
- UITableView的tableHeaderView和viewForHeaderInSection區別
- WEBFORM--第二讲
- 支付宝担保交易接口
- ActionScript 3.0 学习(一) Array、Vector以及Object学习
- 《设计模式》第二章
- java基础篇——多线程