`

dom4j学习总结(一)

阅读更多
(一)创建Document的基本操作

/**
  * xml基本操作
  */
 public void BaseOperation(){
  //创建一个document
  Document document=DocumentHelper.createDocument();
  //创建根结点
  Element root=document.addElement("root");
  //为根结点添加一个book节点
  Element book1=root.addElement("book");
  //为book1添加属性type
  book1.addAttribute("type","science");
  //为book1添加name子节点
  Element name1=book1.addElement("Name");
  //并设置其name为"Java"
  name1.setText("Java");
  //为book1创建一个price节点,并设其价格为100
  book1.addElement("price").setText("100");
  
  //为根结点添加第二个book节点,并设置该book节点的type属性
  Element book2=root.addElement("book").addAttribute("type","science");
  //为book1添加name子节点
  Element name2=book2.addElement("Name");
  //并设置其name为"Oracle"
  name2.setText("Oracle");
  //为book1创建一个price节点,并设其价格为200
  book2.addElement("price").setText("200");
  
  //输出xml
  System.out.println(document.asXML());
 }


调用BaseOperation,输出结果为:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <book type="science">
  <Name>Java</Name>
  <price>100</price>
 </book>
 <book type="science">
  <Name>Oracle</Name>
  <price>200</price>
 </book>
</root>


(二)根据一个符合Document格式的字符串来生成一个Document

 
/**将字符串转化为Document
  * @param str  输入的字符串
  * @return  生成的document
  * @throws DocumentException
  */
 public Document parserStrtoDocument(String str) throws DocumentException{
  Document document=DocumentHelper.parseText(str);
  return document;
 }


调用示例:

String str="<root><book type='science'><Name>Java</Name><price>100</price></book></root>";

  Document document = parserStrtoDocument(str);
  System.out.println(document.asXML());


输出结果为:

<?xml version="1.0" encoding="UTF-8"?>
<root>
 <book type="science">
  <Name>Java</Name>
  <price>100</price>
 </book>
</root>


(三)取得xml节点属性的基本方法

 
/**
  * 取得xml的节点和属性的值
  * @throws DocumentException 
  */
 public void getBaseInfofromDocument() throws DocumentException{
  String str="<root><book type='science'><Name>Java</Name><price>100</price></book></root>";
  //生成一个Document
  Document document = DocumentHelper.parseText(str);
  //取得根结点
  Element root=document.getRootElement();
  //取得book节点
  Element book=root.element("book");
  //取得book节点的type属性的值
  String type=book.attributeValue("type");
  //取得Name节点
  Element name=book.element("Name");
  //取得书名
  String bookname=name.getText();
  //取得书的价钱
  int price=Integer.parseInt(book.element("price").getText());
  
  //输出书目信息
  System.out.println("书名:"+bookname);
  System.out.println("所属类别:"+type);
  System.out.println("价格:"+price);
 }


调用getBaseInfofromDocument,输出结果为:

引用
书名:Java
所属类别:science
价格:100


(四)利用迭代,xpath取得节点及其属性值

 /**利用迭代,xpath取得xml的节点及其属性值
  * @throws DocumentException
  */
 public void getComplexInfofromDocument() throws DocumentException{


  String str="<root><book type='science'><Name>Java</Name><price>100</price></book>"
   +"<book type='science'><Name>Oracle</Name><price>120</price></book>"
   +"<book type='society'><Name>Society security</Name><price>130</price></book>"
   +"<author><name>chb</name></author></root>";
  //生成一个Document
  Document document = DocumentHelper.parseText(str);
  
  //提取类型为"society"的书
  //此处需要添加支持xpath的jar包,详细见备注
  Element society_book=(Element)document.selectSingleNode("/root/book[@type='society']");
  System.out.println(society_book.asXML());
  
  //提取价格节点的列表
  System.out.println("-----------价格列表-------------");
  List price=document.selectNodes("//price");
  for(int i=0;i<price.size();i++){
   Element elem_price=(Element)price.get(i);
   System.out.println(elem_price.getText());
  }
  
  //循环根结点下的所有节点,若当前节点为book,则输出这本书的详细信息
  System.out.println("-------------书目详情------------");
  System.out.println("书名\t\t类别\t\t价格");
  Element root=document.getRootElement();
  Iterator iterator=root.elementIterator();
  while(iterator.hasNext()){
   Element element=(Element)iterator.next();
   if(element.getName().equals("book")){
    System.out.print(element.element("Name").getText()+"\t");
    System.out.print(element.attributeValue("type")+"\t\t");
    System.out.print(element.element("price").getText()+"\n");
   }
  }

  //查找作者姓名
  Element author=(Element)document.selectSingleNode("//author");
  System.out.println("---------"+author.element("name").getText()+"----------");
  //提取作者的所有书目名称
  Iterator iterator_book=root.elementIterator("book");  
  while(iterator_book.hasNext()){
   Element book=(Element)iterator_book.next();
   System.out.print(book.element("Name").getText()+"\t");
  }
  
  //属性迭代
  System.out.println("\n-------属性迭代--------");
  String str1="<book type='science' name='Java' price='100'/>";
  Document document1=DocumentHelper.parseText(str1);
  //开始迭代
  Iterator iterator_attribute=document1.getRootElement().attributeIterator();
  while(iterator_attribute.hasNext()){
   //提取当前属性
   Attribute attribute=(Attribute)iterator_attribute.next();
   System.out.println(attribute.getName()+":"+attribute.getValue());
  }
 }


调用getComplexInfofromDocument,输出结果为:

引用
<book type="society"><Name>Society security</Name><price>130</price></book>

引用
-----------价格列表-------------
100
120
130
-------------书目详情------------
书名  类别  价格
Java science  100
Oracle science  120
Society security society  130
---------chb----------
Java Oracle Society security
-------属性迭代--------
type:science
name:Java
price:100

备注:调用该方法之前,应该先向工程中添加支持xpath的jar包,否则,会出现以下错误:

引用
java.lang.NoClassDefFoundError: org/jaxen/JaxenException
at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
at org.dom4j.tree.AbstractNode.selectSingleNode(AbstractNode.java:183)
at xml_chb.dom4j_chb.getComplexInfofromDocument(dom4j_chb.java:82)
at xml_chb.dom4j_chb.main(dom4j_chb.java:92)
Exception in thread "main"


只需要引入jaxen包就行了,我使用的是hibernate包中的jaxen-1.1-beta-7.jar包。
分享到:
评论

相关推荐

    dom4j-2.1.3.zip

    总结来说,DOM4J 2.1.3是一个强大且易用的XML处理工具,它的API文档和源代码为开发者提供了便利的学习和开发环境。无论你是XML初学者还是资深开发者,DOM4J都能成为你处理XML任务的得力助手。通过深入学习和实践,你...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    总结来说,DOM4J是一个强大的XML处理库,提供了丰富的API和功能,包括解析、操作和查询XML文档。两个不同版本的jar文件包含了源码和文档,方便开发者深入学习和自定义。了解和掌握DOM4J对于处理XML任务的Java开发...

    dom4j-2.0.3.zip

    总结,DOM4J作为Java处理XML的首选工具之一,其易用性、灵活性和高效性为XML操作带来了极大的便利。了解并掌握DOM4J,对于提升XML相关项目的开发效率至关重要。通过阅读DOM4J的API文档(如`dom4j-2.0.3-javadoc.jar`...

    dom4j的Java工程

    总结来说,这个“dom4j的Java工程”是一个学习和实践DOM4J的绝佳资源。通过研究其中的代码,你可以掌握DOM4J处理XML的基本技巧,并理解如何将其应用到实际的Java项目中,以实现XML文件的高效管理和操作。无论是新手...

    XML DOM4J学习笔记

    总结,XML DOM4J提供了一种高效且易用的方式来处理XML文档,结合XPath查询,能够快速地定位和操作XML数据。在实际开发中,根据项目需求和文档规模选择合适的XML处理方式至关重要。通过持续学习和实践,可以熟练掌握...

    dom4j(2.1.1+ 2.0.2+ 1.6.1).zip

    DOM4J是一款强大的Java XML处理库,它提供了全面而灵活的API,用于处理XML文档。这个压缩包包含了DOM4J的三个不同版本:2.1.1、2.0.2和1.6.1,分别对应不同的Java环境兼容性。 1. **DOM4J 2.1.1** - **Java 8+ ...

    dom4j-jar与dom4j解析xml文档介绍

    总结来说,dom4j是一个强大的XML处理工具,它提供了丰富的API来读取、创建和修改XML文档。通过学习和使用dom4j,开发者能够高效地处理XML数据,特别是在Java环境中。提供的API文档jar包和解析XML的PDF说明,将有助于...

    dom4j-1.6.1

    总结来说,DOM4J-1.6.1是一个功能强大的XML处理库,它的API丰富、易用且高效,广泛应用于Java XML处理场景。无论是解析、操作还是构建XML文档,DOM4J都能提供出色的支持。开发者可以通过这个压缩包中的“dom4j-1.6.1...

    dom4j2

    总结来说,DOM4J2是一个强大的XML处理工具,提供了广泛的API来满足各种XML操作需求。了解其源码可以帮助我们更深入地理解其工作原理,从而更好地应用到实际项目中。通过具体的实例,如"dom4jxml 修改",我们可以学习...

    dom4j解析xml详解,包含源代码,dom4j.jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而灵活的API,使得在Java应用程序中读取、写入、修改以及查询XML变得容易。本篇将深入讲解DOM4J解析XML的原理与实践,同时提供相关源代码供参考。 一、...

    Dom4J完成例子,Dom4J

    **Dom4j详解** ...总结来说,Dom4j是一个强大的XML处理库,它简化了XML的读写、解析、修改和查询操作,是Java开发中处理XML文档的首选工具之一。通过学习和实践这些基本用法,你可以轻松地应对各种XML处理需求。

    dom4j-1.6.1.zip

    这些文档对于理解DOM4J的用法和API细节非常有帮助,开发者可以通过查阅这些文档快速学习和解决问题。 **使用DOM4J的关键概念** 1. **Element**:表示XML文档中的元素,是DOM4J中最基本的节点类型。你可以通过...

    dom4j帮助文档和架包

    总结来说,DOM4J是一个强大且全面的XML处理工具,适用于广泛的XML应用场景,无论是解析、构建还是操作XML文档,它都能提供高效且易于使用的解决方案。通过学习“dom4j帮助文档和架包”,开发者能够掌握DOM4J的精髓,...

    dom4j实战(一)——使用dom4j从XML中读取数据源配置

    这篇名为"dom4j实战(一)——使用dom4j从XML中读取数据源配置"的博客文章将深入探讨如何利用DOM4J从XML文件中读取数据源配置。 首先,我们需要理解DOM4J的基本概念。DOM4J是基于DOM模型的,DOM(Document Object ...

    dom4j-2.1.0

    **DOM4J 2.1.0:XML处理与解析的高效工具...总结来说,DOM4J 2.1.0是一个强大且易用的XML处理库,通过其丰富的API和高效的性能,使得XML操作成为Java开发中的轻松任务。无论是新手还是经验丰富的开发者,都能从中受益。

    dom4j api文档

    **DOM4J API文档概述** ...深入学习和掌握DOM4J API,可以极大地提高XML处理的效率和灵活性,为Java项目中的XML操作提供便利。在实际开发中,结合apidocs中的详细说明,可以更高效地利用DOM4J解决问题。

    dom4j 学习笔记

    **DOM4J学习笔记** DOM4J是一个强大的Java XML API,它提供了丰富的XML处理功能,包括文档构建、解析、修改和查询。作为一个开源项目,DOM4J在XML处理领域具有广泛的用户基础,因其简单易用和高效性能而备受青睐。...

    DOM4J_xpath

    ### DOM4J与XPath详解 #### 一、DOM4J简介 **DOM4J**是一款由dom4j.org开发的开源XML解析库,专为Java平台设计,它不仅支持DOM和SAX这...对于想要学习DOM4J和XPath的朋友来说,本文提供了深入的理解和技术实践指南。

Global site tag (gtag.js) - Google Analytics