`
MauerSu
  • 浏览: 515000 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作

 
阅读更多
源:http://w11h22j33.iteye.com/blog/912166/
评:


java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。

前两天,在java项目中写了一些关于对XML文档的操作,利用dom4j对XML文档的创建、解析、查找、修改、保存,校验等操作。以下代码供有需要的朋友参考。




import java.io.File;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;

import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.DocumentException;
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.xml.sax.SAXException;
/***
* JDK版本:jdk5.0
* 利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
* @author Jack Chen
* 日期:2007-05-17
*/
public class TestXML {

public static final String SAVE_XMLFILE_PATH = "saveXML.xml";

public TestXML() {

}


/**
  * 创建一个XML文档
  * @return doc 返回该文档
  */
public Document createXMLDocument(){
  Document doc = null;
  doc = DocumentHelper.createDocument();
  doc.addComment("edited with XMLSpy v2005 rel. 3 U (http://www.altova.com) by  ()");
//  doc.addDocType("class","//By Jack Chen","saveXML.xsd");
  Element root = doc.addElement("class");
  Element company = root.addElement("company");
  Element person = company.addElement("person");
  person.addAttribute("id","11");
  person.addElement("name").setText("Jack Chen");
  person.addElement("sex").setText("男");
  person.addElement("date").setText("2001-04-01");
  person.addElement("email").setText("chen@163.com");
  person.addElement("QQ").setText("2366001");

  return doc;
}

/**
  * 解析XML文档
  * @param xmlFile
  * @return XML文档
  * @throws DocumentException
  * @throws FileNotFoundException
  */
public Document parse(String xmlFile) throws DocumentException, FileNotFoundException{
  SAXReader reader = new SAXReader();
  Document doc = reader.read(new File(xmlFile));
  return doc;
}

/***
  * 将XML文档输出到控制台
  * @param doc
  * @throws IOException
  */
public void printDocument(Document doc) throws IOException{
  OutputFormat format = OutputFormat.createPrettyPrint();
  XMLWriter writer = new XMLWriter(new OutputStreamWriter(System.out),format);
  writer.write(doc);
  writer.close();
}

/**
  * 保存XML文档
  * @param doc
  * @throws IOException
  */
public void saveDocument(Document doc) throws IOException{
  OutputFormat format = OutputFormat.createPrettyPrint();
  XMLWriter writer = new XMLWriter(new FileOutputStream(SAVE_XMLFILE_PATH),format);
  writer.write(doc);
  writer.close();
}
/**
  * 验证XML文档和schemaURL
  * @param xmlFile
  * @param schemaUrl
  * @return XML文档
  * @throws SAXException
  * @throws DocumentException
  */
public Document validate(String xmlFile,String schemaUrl) throws SAXException, DocumentException{
  SAXReader reader = new SAXReader(true);
System.out.println("validate by: " + schemaUrl);
 
  reader.setFeature("http://apache.org/xml/features/validation/schema", true);
 
  reader.setFeature("http://xml.org/sax/features/validation", true);
 
  reader.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation",
    schemaUrl);
 
  reader.setFeature("http://apache.org/xml/features/validation/schema-full-checking",
                true);
  Document doc = reader.read(new File(xmlFile));
 
  return doc; 
}

/**
  * 查找 xml
  * @param doc
  * @throws IOException
  */

public void listDocument(Document doc) throws IOException{
 
  String xpath = "/class/company/person[@id="11"]";
  Element list =  (Element) doc.selectSingleNode(xpath);
  System.out.println(list.getName());

//  if (list.element("name").getName().equals("name")) {

  System.out.println("name:"+list.element("name").getText());
  System.out.println("sex:"+list.element("sex").getText());
  System.out.println("date:"+list.element("date").getText());
  System.out.println("email:"+list.element("email").getText());
  System.out.println("QQ:"+list.element("QQ").getText());
}

/***
  * 利用XPATH查找元素,然后修改
  * @param doc
  * @throws IOException
  */
public void updateDocByXPATH(Document doc) throws IOException{
  String xpath = "/class/company/person[@id="11"]";
  Element list =  (Element) doc.selectSingleNode(xpath);
  System.out.println(list.getName());

//  if (list.element("name").getName().equals("name")) {

  list.element("name").setText("1123");
  list.element("sex").setText("男");
  list.element("date").setText("1800-01-01");
  list.element("email").setText("163@163.com");
  list.element("QQ").setText("12345");
//  }
  saveDocument(doc);

}

/**
  * 从根节点遍历,来修改XML文件,并保存。
  * @param doc
  * @throws IOException
  */
public void updateDocument(Document doc) throws IOException{

  Element root = doc.getRootElement();
//  System.out.println(root.asXML());
 
  for (Iterator i = root.elementIterator(); i.hasNext();) {
   Element e = (Element) i.next();
   System.out.println(e.getName());
   System.out.println(e.getPath());
   if(e.element("person").element("name").getName().equals("name")){
    e.element("person").element("name").setText("ChenJI");
    e.element("person").element("QQ").setText("123456");

   }
   System.out.println(e.getText().toString());
  }
  saveDocument(doc); 
}

}
分享到:
评论

相关推荐

    Java使用sax、dom、dom4j解析xml文档

    Java提供了多种解析XML的API,包括SAX(Simple API for XML)、DOM(Document Object Model)以及DOM4J。下面我们将详细探讨这些解析方式及其在实际开发中的应用。 1. SAX解析器: SAX是一种基于事件驱动的解析器,...

    利用 dom4j 解析 xml 文档

    Dom4j是一个基于Java的开源项目,它实现了DOM、SAX和JDOM等解析器的接口,并提供了一种更方便的方式来处理XML文档。它支持XPath查询,能够方便地创建、修改和查询XML结构。 **读取XML文档:** 1. **添加依赖**:在...

    dom4j解析xml文件的压缩包

    1. **Document对象**:DOM4J中的Document对象代表整个XML文档。它是XML结构的根,包含了所有的元素、属性和文本节点。你可以通过`DocumentBuilder`来构建或解析一个Document对象。 2. **Element对象**:Element是...

    dom4j读写xml文档实例

    总结,DOM4J是Java开发中处理XML文档的强大工具,它的易用性和灵活性使得XML操作变得简单。无论是读取、写入还是搜索XML,DOM4J都能提供高效的方法。在实际项目中,结合源码阅读和使用DOM4J工具,能够更深入地理解和...

    java dom4j 解析xml的例子,可用

    Java DOM4J库是用于处理XML文档的一个强大的开源框架,它提供了一种灵活且高效的方式来解析、创建和操作XML内容。DOM4J这个名字来源于“Document Object Model”(DOM)和“Java”的组合,它扩展了DOM接口,同时引入...

    dom4j生成XML文档及解析

    DOM4J是一个Java库,它提供了处理XML文档的强大功能,包括创建、修改和查询XML。在这个场景中,我们将深入理解如何使用DOM4J来生成XML文档以及如何解析XML内容。 首先,生成XML文档涉及以下几个主要步骤: 1. **...

    dom4j---xml解析jar包

    2. **集合框架集成**:DOM4J中的XML元素可以像Java集合一样进行迭代、查找、添加和删除,大大简化了编程。 3. **XPath支持**:DOM4J提供了对XPath表达式的强大支持,可以方便地定位XML文档中的任何节点。 4. **轻量...

    Java创建xml文档笔记(DOM,DOM4J)

    - 查询能力:DOM4J集成了XPath,可以方便地查找和定位XML文档中的元素。 - 支持命名空间:DOM4J对XML命名空间有很好的支持。 四、示例代码 这里给出一个使用DOM4J创建XML文档的简单示例: ```java import org....

    java中dom4j读写XML

    在Java中,DOM4J提供了一种灵活的方式来操作XML文档,包括解析、遍历、修改节点以及序列化回XML字符串。 **DOM4J的基本概念:** 1. **Element(元素)**:XML文档中的每一个标签都是一个Element,它包含属性、文本...

    dom4j解析和创建xml简单实例

    XPath是一种在XML文档中查找信息的语言,与DOM4J结合使用,可以高效地定位到XML文档中的特定节点。接下来,我们将深入探讨这两个关键概念以及如何通过它们实现XML的处理。 1. DOM4J解析XML 当我们处理XML文档时,...

    dom4j.jar包,java解析xml dom4j.jar包

    总结来说,DOM4J是Java开发中处理XML文档的强大工具,无论是在解析、查询还是修改XML方面,都提供了高效的解决方案。结合其轻量级的设计和对XPath的支持,DOM4J成为了Java开发者的首选XML库之一。

    dom4j解析xml

    ### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。

    java中用dom4j读取xml

    1. **创建Document对象**:首先,我们需要使用`DocumentFactory`类创建一个`Document`对象,它是DOM4J中表示整个XML文档的顶级节点。 ```java import org.dom4j.Document; import org.dom4j.DocumentFactory; ...

    DOM与DOM4J解析XML文档的详细讲解

    本文将深入探讨DOM(Document Object Model)和DOM4J两种XML解析技术,帮助你一次性全面掌握XML文档的解析过程。 一、DOM解析XML DOM,即文档对象模型,是W3C组织制定的一种解析XML的标准。它将XML文档转换为一个...

    dom4j_XML.rar_DOM4J_dom4j xml java_java xml_读写xml

    4. **XPath查询**:DOM4J支持XPath,这是一种强大的查询语言,可以用来查找XML文档中的特定元素、属性或者文本。通过`XPathExpression`和`XPathFactory`,我们可以编写XPath表达式并执行查询,高效地定位到需要的...

    dom4j解析XML所需要的jar包

    DOM4J-1.6.1是该库的一个版本,包含了对XML文档的各种操作功能,如读取、写入、修改、遍历和搜索等。这个版本可能包含了一些特定的改进和修复,以提高性能和兼容性。 在DOM4J中解析XML时,常常需要配合XPath...

    DOM4J解析XML

    总的来说,DOM4J是Java开发中处理XML的强大工具,无论是解析、构建还是修改XML文档,它都能提供高效和便捷的解决方案。通过学习和掌握DOM4J,开发者可以更好地利用XML进行数据交换和处理,提高项目开发的效率。结合...

    DOM4J xml解析工具

    2. **构建XML文档**:DOM4J提供了丰富的API,允许开发者创建新的XML文档,或者修改已有的XML文档。通过Element、Attribute、Text等对象,可以轻松构建复杂的XML结构。 3. **XPath支持**:DOM4J支持XPath表达式,这...

    java用dom4j解析xml

    在Java中,解析XML文件是常见的任务,用于读取、修改或创建XML文档。本节将深入探讨Java中解析XML的方法,特别是使用DOM4J库进行解析。 XML解析方法主要有四种:DOM(文档对象模型)、SAX(简单API for XML)、StAX...

Global site tag (gtag.js) - Google Analytics