Java-dom4j解析XML文件

上一篇 / 下一篇  2013-03-08 12:45:50 / 个人分类:XML解析

1、DOM4J简介
    DOM4J dom4j.org 出品的一个开源 XML 解析包。DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOMSAX JAXP
    DOM4J 使用起来非常简单。只要你了解基本的 XML-DOM 模型,就能使用。
    Dom:把整个文档作为一个对象。
2、读写XML文档
   主要依赖于
org.dom4j.io包,有DOMReaderSAXReader两种方式。因为利用了相同的接口,它们的调用方式是一样的。
  public Document readXML(String fileNameXml){
     Document document = NULL;
     SAXReader reader = new SAXReader();
     document = reader.read(new File(fileNameXMl));
     return document;
  }
3、读取xml文件根元素
    Element root= document.getRootElement();

4、遍历节点
   Iterator itr  = root.ElementIterator();
   while(itr.hasNext()){
      Element elem = (Element)itr.next();
      do something.....
   }
5、选择节点
   List list = document.selectNode("Xpath 路径");

6、Element 类的函数

getQName()

元素的QName对象

getNamespace()

元素所属的Namespace对象

getNamespacePrefix()

元素所属的Namespace对象的prefix

getNamespaceURI()

元素所属的Namespace对象的URI

getName()

元素的local name

getQualifiedName()

元素的qualified name

getText()

元素所含有的text内容,如果内容为空则返回一个空字符串而不是null

getTextTrim()

元素所含有的text内容,其中连续的空格被转化为单个空格,该方法不会返回null

attributeIterator()

元素属性的iterator,其中每个元素都是Attribute对象

attributeValue()

元素的某个指定属性所含的值

elementIterator()

元素的子元素的iterator,其中每个元素都是Element对象

element()

元素的某个指定(qualified name或者local name)的子元素

elementText()

元素的某个指定(qualified name或者local name)的子元素中的text信息

getParent

元素的父元素

getPath()

元素的XPath表达式,其中父元素的qualified name和子元素的qualified name之间使用"/"分隔

isTextOnly()

是否该元素只含有text或是空元素

isRootElement()

是否该元素是XML树的根节点



7、格式化编码
  默认的输出方式为紧凑方式,默认编码为UTF-8,但对于我们的应用而言,一般都要用到中文,并且希望显示时按自动缩进的方式的显示,这就需用到OutputFormat类。

  /**

  * 格式化XML文档,并解决中文问题

  * @param filename

  * @return

  */

  public int formatXMLFile(String filename){

  int returnValue = 0;

  try{

  SAXReader saxReader = new SAXReader();

  Document document = saxReader.read(new File(filename));

  XMLWriter writer = null;

  /** 格式化输出,类型IE浏览一样 */

  OutputFormat format = OutputFormat.createPrettyPrint();

  /** 指定XML编码 */

  format.setEncoding("GBK");

  writer= new XMLWriter(new FileWriter(new File(filename)),format);

  writer.write(document);

  writer.close();

  /** 执行成功,需返回1 */

  returnValue = 1;

  }catch(Exception ex){

  ex.printStackTrace();

  }

  return returnValue;

  }

  说明:

  OutputFormat format = OutputFormat.createPrettyPrint();

  这句指定了格式化的方式为缩进式,则非紧凑式。

  format.setEncoding("GBK");

  指定编码为GBK

  XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)),format);

  这与前面两个方法相比,多加了一个OutputFormat对象,用于指定显示和编码方式。 


TAG:

 

评分:0

我来说两句

我的栏目

日历

« 2024-05-03  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 2397
  • 日志数: 3
  • 建立时间: 2011-11-30
  • 更新时间: 2013-03-11

RSS订阅

Open Toolbar