`
alfredgao
  • 浏览: 137935 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

Dom4j(转载自http://blog.csdn.net/hbcui1984)

    博客分类:
  • xml
阅读更多
import java.util.Iterator;
import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;



public class Dom4jTest1 {
/**
  * (一)创建Document的基本操作
  */
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());
}

/**(二)将字符串转化为Document
  * @param str  输入的字符串
  * @return  生成的document
  * @throws DocumentException
  */
public Document parserStrtoDocument(String str) throws DocumentException
{
     Document document=DocumentHelper.parseText(str);
     return document;
}
    
public void parserStrtoDocumentTest() throws DocumentException
{
String str="<root><book type='science'><name>Java</name><price>100</price></book></root>";
Document document = parserStrtoDocument(str);
System.out.println(document.asXML());
}

/**
  * (三)取得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);
}

/**(四)利用迭代,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>History</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("");
 
  //提取价格节点的列表
  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\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("");
  System.out.println("作者姓名:"+author.element("name").getText());
  System.out.println("");
 
  //提取作者的所有书目名称
  Iterator iterator_book=root.elementIterator("book"); 
  while(iterator_book.hasNext()){
   Element book=(Element)iterator_book.next();
   System.out.println("所著书籍");
   System.out.println(book.element("Name").getText());
  }
 
  //属性迭代
  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());
  }
}

public static void main( String[] args )
{
try
{
Dom4jTest1 test = new Dom4jTest1();
// test.BaseOperation();
// test.parserStrtoDocumentTest();
// test.getBaseInfofromDocument();
test.getComplexInfofromDocument();
}
catch( Exception e )
{
e.printStackTrace();
}
}
}
分享到:
评论

相关推荐

    日历效果,经过自己修改,效果看链接:https://mp.csdn.net/postedit/97487640,月.rar

    描述中提供的链接指向了一个CSDN博客文章,其中可能详细介绍了实现过程和代码示例。通常,这样的效果还会包含事件监听器,以便用户可以通过点击来选择日期,或者通过左右按钮切换月份。例如: ```javascript ...

    jQuery弹出层插件大全

    演示实例:http://fancybox.net/example 4.jQueryUI Dialog 官方网站:http://jqueryui.com/demos/dialog/ 下载地址:http://jqueryui.com/demos/dialog/ 演示实例:http://jqueryui.com/demos/dialog/ 5.DOM ...

    JavaScript教程.rar

    4. **函数式编程**:JavaScript支持函数式编程风格,如高阶函数、函数作为一等公民(函数可以作为值传递、作为返回值、作为参数等)以及函数组合。 5. **事件处理**:JavaScript通过事件监听和事件处理函数,使得...

    web打印(纯jq和css,不用浏览器控件)

    本文将深入探讨如何使用纯JavaScript(jQuery)和CSS实现这一目标,主要参考自CSDN博主wlmnzf的文章详情页:http://blog.csdn.net/wlmnzf/article/details/47252755。 首先,我们要理解“web打印”是指通过浏览器...

    应用最广的十大Javascript框架下载地址

    - **博客**: [http://blog.mootools.net/](http://blog.mootools.net/) - **文档**: [http://docs.mootools.net/](http://docs.mootools.net/) - **示例**: [http://demos.mootools.net/]...

    基于SpringMVC+Spring+MyBatis (SSM) 架构的高效率便捷开发框架源码+项目说明.zip

    Dom4j | 1.6.1 | [http://www.dom4j.org](http://www.dom4j.org) Ehcache | 2.6.11| [http://www.ehcache.org/](http://www.ehcache.org/) Logback | 1.2.3 | [https://logback.qos.ch](https://logback.qos.ch) ...

    Image Size-crx插件

    自动计算图像尺寸 ## image size使用说明 ### 背景 页面中图片资源经常引用过大,造成页面性能浪费,基于此开发了此chrome插件,用于对页面的图片进行检查,即图片...* 以及在页面中的具体dom对象 支持语言:中文 (简体)

    jaxen.jar和dom4j.jar

    at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230) at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207) at org.dom4j.tree.AbstractNode.selectSingleNode(AbstractNode....

    jquery-1.12.4.js

    jQuery的选择机制构建于Css的选择器,它提供了快速查询DOM文档中元素的能力,而且大大强化了JavaScript中获取页面元素的方式。

    GridView右键菜单(有bug,新的 http://download.csdn.net/source/1049911)

    在.NET开发领域,GridView控件是ASP.NET Web Forms中常用的一种数据展示组件,它能够方便地将数据库中的数据以表格的形式展示在网页上,并提供多种交互功能。在本主题中,我们聚焦于“GridView右键菜单”,这是一个...

    使用dom4j和jaxen解析xml

    在Java开发中,dom4j和jaxen是两个常用的库,用于解析和操作XML文档。 **dom4j** 是一个非常灵活且功能强大的Java XML API,它提供了全面的XML解决方案,包括XML的读取、写入、修改以及XPath查询等功能。dom4j的...

    三级联动java源码

    4. **数据库操作**:由于提到有"mysql生成语句",项目很可能使用MySQL作为数据库,涉及SQL查询、CRUD操作(创建、读取、更新、删除)以及连接池管理。 5. **Ajax技术**:为了实现下拉框的动态加载,项目可能会用到...

    QT使用SAX读取xml高效-快速.rar

    QT使用SAX读取xml高效-快速.rar SAX(Simple API for XML) 如果你只想读取并显示整个XML文档,那么SAX是很好的选择,...博文链接:https://txwtech.blog.csdn.net/article/details/126324844?spm=1001.2014.3001.5502

    dom4j-1.6.1.jar + jaxen-1.1.1.jar

    DOM4J和Jaxen是两个在Java编程中用于XML处理的重要库,它们在解析、操作和查询XML文档方面发挥着关键作用。 DOM4J是一个非常灵活且功能强大的开源XML库,它为Java开发者提供了丰富的API来处理XML文档。DOM4J支持...

    dom4j_1_6_1 完整支持包下载

    dom4j-1.6.1.jar jaxen-1.1-beta-6.jar jaxme-api-0.3.jar jsr173_1.0_api.jar msv-20030807.jar pull-parser-2.1.10.jar relaxngDatatype-20030807.jar xml-apis-2.0.2.jar xpp3-1.1.3.3.jar xsdlib-20030807.jar ...

    JAVA WEB典型模块与项目实战大全.part1(第一卷)

    http://download.csdn.net/detail/jincheng52rmb/5349256 http://download.csdn.net/detail/jincheng52rmb/5349247 http://download.csdn.net/detail/jincheng52rmb/5349230 典型模型与项目实战大全&gt;&gt; 出版社: 清华...

    java组件下载地址大全

    13. JDOM和dom4j:这两个组件都是用于处理XML文档的Java库,JDOM的官网是http://www.jdom.org,而dom4j的项目页面在http://sourceforge.net/projects/dom4j/。 以上是Java组件的一些基本介绍和下载地址,这些组件在...

    Dom4j使用简介

    Dom4j使用简介,日志 开发java必看,初级高级开发必看

    tnr34:paheal.net上的子域解析器

    【tnr34:paheal.net上的子域解析器】是一个基于JavaScript的应用程序,用于浏览和探索Rule34-Rule34网站上的内容。Rule34是一个网络文化概念,指的是互联网上几乎任何事物都有相应的成人主题创作。而paheal.net是这...

    Dom4j练习.rar

    "Dom4j练习.rar" 这个标题表明了这是一个关于Dom4j的实践教程或示例代码的压缩包。Dom4j是一个非常流行的Java库,专门用于处理XML文档,它提供了灵活且高效的方式来操作XML,包括读取、写入、修改以及查询XML内容。 ...

Global site tag (gtag.js) - Google Analytics