package xml;
import java.io.FileWriter;
import java.io.IOException;
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;

public class TestXML ...{
    //创建XML文档
    public static Document createDocument() ...{
        Document document = DocumentHelper.createDocument();
        Element root = document.addElement( "root" );

        Element author1 = root.addElement( "author" )
            .addAttribute( "name", "James" )
            .addAttribute( "location", "UK" )
            .addText( "James Strachan" );
               
        Element author2 = root.addElement( "author" )
            .addAttribute( "name", "Bob" )
            .addAttribute( "location", "US" )
            .addText( "Bob McWhirter" );

        return document;
    }
    //将文档内容输出到文件或控制台
    public static void write(Document document) throws IOException ...{

        // lets write to a file
        XMLWriter writer = new XMLWriter(
            new FileWriter( "output.xml" )
        );
        writer.write( document );
        writer.close();


        // Pretty print the document to System.out
        OutputFormat format = OutputFormat.createPrettyPrint();
        writer = new XMLWriter( System.out, format );
        writer.write( document );

        // Compact format to System.out
        format = OutputFormat.createCompactFormat();
        writer = new XMLWriter( System.out, format );
        writer.write( document );
    }
    //解析XML文件成Document ,url为文件路径
    public  static Document parse(String url) throws DocumentException ...{
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
    //read Docment内容
    public static  void read(Document document) throws DocumentException ...{

        Element root = document.getRootElement();

        // 从XML的根结点开始遍历
        for ( Iterator i = root.elementIterator(); i.hasNext(); ) ...{
            Element element = (Element) i.next();
                System.out.println(element.getName()+":"+element.getText());
        }

      /**//*  // iterate through child elements of root with element name "foo"
        for ( Iterator i = root.elementIterator( "foo" ); i.hasNext(); ) {
            Element foo = (Element) i.next();
            // do something
        }

        // iterate through attributes of root 
        for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
            Attribute attribute = (Attribute) i.next();
            // do something
        }*/
     }
    
    //将document转化为String
    public static String XmlToString(Document document)...{
        return  document.asXML();    
    }
    
    //将document转化为String
    public static Document StringToDocument(String text)...{
        try ...{
            return DocumentHelper.parseText(text);
        } catch (DocumentException e) ...{
            // TODO Auto-generated catch block
            e.printStackTrace();
            return null;
        }    
    }
    public static void main(String[] args) throws IOException, DocumentException ...{
//        write(parse("E:/WebService/XFire/example/XFire/output.xml"));
        String str="<?xml version='1.0' encoding='utf-16'?> "+
  "<CurrentWeather>"+
  "<Location>Shanghai / Hongqiao, China (ZSSS) 31-10N 121-26E 3M</Location>"+
  "<Time>Aug 22, 2007 - 09:00 PM EDT / 2007.08.23 0100 UTC</Time>"+
  "<Wind> from the ESE (110 degrees) at 7 MPH (6 KT) (direction variable):0</Wind>"+
  "<Visibility> 4 mile(s):0</Visibility>"+
  "<SkyConditions> mostly clear</SkyConditions>"+
  "<Temperature> 87 F (31 C)</Temperature>"+
  "<DewPoint> 78 F (26 C)</DewPoint>"+
  "<RelativeHumidity> 74%</RelativeHumidity>"+
  "<Pressure> 29.77 in. Hg (1008 hPa)</Pressure>"+
  "<Status>Success</Status>"+
  "</CurrentWeather>";
        write(StringToDocument(str));
    }
}

SAX解析xml

1、使用绝对路径

// 解析XML文件成Document ,url为文件路径
   SAXReader reader = new SAXReader();
   Document document = null;
  
      String xmlFilePath = "d:/serialComm.xml";

document = reader.read(xmlFilePath);
    InitSMSCat.log.info("串口配置文件的目录:"+xmlFilePath);
  
   if(document == null)
   {
    InitSMSCat.log.info("配置文件serialComm.xml读取发生错误!!!");
    throw new Exception("配置文件serialComm.xml读取发生错误!!!");
   
   }
   // read Docment内容
   Element root = document.getRootElement();

// 从XML的根结点开始遍历
   for (Iterator i = root.elementIterator(); i.hasNext();)
   {
    Element element = (Element) i.next();
    if(element.getName().equals("comm")) comm = element.getText();
   }

2、使用环境变量

// 解析XML文件成Document ,url为文件路径
   SAXReader reader = new SAXReader();
   Document document = null;
  
   InitSMSCat.log.info("环境变量SMS_HOME = "+System.getenv("SMS_HOME"));
  
      String xmlFilePath = "";
    if(Utility.getOsName().equals("windows"))
     xmlFilePath = System.getenv("SMS_HOME")+"";
    if(Utility.getOsName().equals("linux"))
     xmlFilePath = (System.getenv("SMS_HOME")+"/config/serialComm.xml").replace("\\", "/");
   
   document = reader.read(xmlFilePath);
    InitSMSCat.log.info("串口配置文件的目录:"+xmlFilePath);
  
   if(document == null)
   {
    InitSMSCat.log.info("配置文件serialComm.xml读取发生错误!!!");
    throw new Exception("配置文件serialComm.xml读取发生错误!!!");
   
   }
   // read Docment内容
   Element root = document.getRootElement();

// 从XML的根结点开始遍历
   for (Iterator i = root.elementIterator(); i.hasNext();)
   {
    Element element = (Element) i.next();
    if(element.getName().equals("comm")) comm = element.getText();
   }

3、读取jar包中的xml文件

// 解析XML文件成Document ,url为文件路径
   SAXReader reader = new SAXReader();
   Document document = null;

document = reader.read(this.getClass().getResourceAsStream("/serialComm.xml"));
   if(document == null)
   {
    InitSMSCat.log.info("配置文件serialComm.xml读取发生错误!!!");
    throw new Exception("配置文件serialComm.xml读取发生错误!!!");
   
   }
   // read Docment内容
   Element root = document.getRootElement();

// 从XML的根结点开始遍历
   for (Iterator i = root.elementIterator(); i.hasNext();)
   {
    Element element = (Element) i.next();
    if(element.getName().equals("comm")) comm = element.getText();
   }

dom4j的用法的更多相关文章

  1. 使用面向对象对XML进行解析:dom和dom4j的用法

    这是一个比较简单的例子,主要是运用面向对象的思想,对XML文件进行解析,用dom和dom4j方法 <?xml version="1.0" encoding="utf ...

  2. Java Dom4j XML用法总结

    1.新建XML文档:              Document doc = DocumentHelper.createDocument();             Element root = d ...

  3. 转:在java中使用dom4j解析xml

    JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...

  4. dom4J 学习

    Java给我们提供了标准的W3C接口实现,已完成对XML的处理.主要有两大类,分别是DOM操作,SAX解析.DOM可以将XML加载到内存中,对XML进行方便的增删查改.由于是将整个XML都加载到内存中 ...

  5. 08-Xml & Tomcat

    Xml & Tomcat Xml >eXtendsible   markup  language     可扩展的标记语言 XML  有什么用? 1. 可以用来保存数据 2. 可以用来做 ...

  6. Xml & Tomcat

    文档声明: 简单声明, version : 解析这个xml的时候,使用什么版本的解析器解析 <?xml version="1.0" ?> encoding : 解析xm ...

  7. Java就业班day09_xml&tomcat

    Xml & Tomcat Xml eXtendsible markup language 可扩展的标记语言 XML 有什么用? 可以用来保存数据 可以用来做配置文件 数据传输载体 定义xml ...

  8. 第70节:Java中xml和tomcat

    第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...

  9. 中阶 d04.1 xml解析

    ##XML 解析 > 其实就是获取元素里面的字符数据或者属性数据. ###XML解析方式(面试常问) > 有很多种,但是常用的有两种. * DOM * SAX ![icon](img/pa ...

随机推荐

  1. 通过demo搞懂encode_utf8和decode_utf8

    perl 编码问题: use utf8表示代码使用UTF-8写的 [root@wx03 0710]# cat a1.pl #use utf8; my $str='测试utf8字符集'; print $ ...

  2. 基于visual Studio2013解决面试题之1204大数组查找

     题目

  3. 参考storm中的RotatingMap实现key超时处理

    storm0.8.1以后的RotatingMap完全可以独立于storm用来实现hashmap的key超时删除,并调用回调函数 RotatingMap.java: import java.util.H ...

  4. Swift - 产生不重复数字的随机数生成器

    在Swift中,可以使用函数类型的参数,也可以使用函数类型的返回值.而作为返回值的函数,还能“捕获”外部的值,并多次使用它.这个特性,常可用来创建各种生成器. 下面通过创建一个“随机数生成器函数”作为 ...

  5. jQuery EasyUI API 中文文档 - 分隔按钮(splitbutton)

    <html> <head> <script src="jquery-easyui/jquery.min.js"></script> ...

  6. [置顶] C++之TinyXML的使用介绍

    一.引子: 最近在做GBT28181国标平台对接的工作,涉及到一些进程间消息通讯,消息体有xml格式,之前测试的时候都是拿他们当做字符串去解析,现在正儿八经地开发的时候,就想到了用xml库去解析,由于 ...

  7. SQL Select语句完整的执行顺序

    1.from子句组装来自不同数据源的数据: 2.where子句基于指定的条件对记录行进行筛选: 3.group by子句将数据划分为多个分组: 4.使用聚集函数进行计算: 5. 使用having子句筛 ...

  8. Servlet的学习之Session(4)

    在本篇中,我们来使用Session完成一个用户登录的案例,前提声明:这个案例主要用于学习Session技术,是属于比较简单的类型,以后会采用MVC模式来开发登录,那就会比较复杂. 现在大多数网站都提供 ...

  9. 如何在settings里的休眠模式里添加永不休眠

    最近项目需求里需要在设置菜单的休眠模式里添加一项永不休眠选择项.针对MTK平台的修改方式有如下几步骤.(其他平台和android原生系统的修改方式类似,只是android原生系统修改永不休眠需要通过设 ...

  10. 利用Xtrabackup备份集合恢复一台从库的过程

    1 time tar -xvf Open..tarx.gz real    35m22.502s user    10m16.499s sys     1m28.578s You have new m ...