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. ssh安装过程

    1.在线安装[root@Asianux ~]# sudo apt-get install ssh   2.进行加密设置[root@Asianux ~]# ssh-keygen -t rsa3.启动SS ...

  2. bottle-session 0.2 : Python Package Index

    bottle-session 0.2 : Python Package Index bottle-session 0.2 Download bottle-session-0.2.tar.gz Redi ...

  3. C#的静态构造函数

    “静态构造函数”典型应用于第一次使用类时的初始化工作,注意“第一次”,意思是它只执行一次. 有同学说了,类的初始化不是有构造函数嘛?我们回答:构造函数是每个实例被声明时都会执行的,它属于每一个实例,而 ...

  4. 大数据高并发系统架构实战方案(LVS负载均衡、Nginx、共享存储、海量数据、队列缓存)

    课程简介: 随着互联网的发展,高并发.大数据量的网站要求越来越高.而这些高要求都是基础的技术和细节组合而成的.本课程就从实际案例出发给大家原景重现高并发架构常用技术点及详细演练. 通过该课程的学习,普 ...

  5. Spark on Mesos: 搭建Mesos的一些问题

    资源管理系统 Spark可以搭建在Mesos上或YARN上,两个都是资源管理系统.了解资源管理系统的话,可以先参看以下几篇文章: 浅谈Borg/YARN/Mesos/Torca/Corona一类系统 ...

  6. shell telnet 路由器

    #!/usr/bin/expect -f spawn telnet 172.16.1.80 expect "login" { send "admin\n" ex ...

  7. 已成功与服务器建立连接,但是在登录过程中发生错误。 (provider: SSL Provider, error: 0 - 接收到的消息异常,或格式不正确。)

    之前做好的asp.net部署后,发现 访问数据库时: 异常:已捕获: "已成功与服务器建立连接,但是在登录过程中发生错误. (provider: SSL Provider, error: 0 ...

  8. 爬虫总结_java

    基于webmagic的爬虫项目经验小结 大概在1个月前,利用webmagic做了一个爬虫项目,下面是该项目的一些个人心得,贴在这里备份: 一.为什么选择webmagic? 说实话,开源的爬虫框架已经很 ...

  9. Boost::Asio::Error的用法浅析

    一般而言我们创建用于接收error的类型大多声明如下: boost::system::error_code error 我们用这个类型去接受在函数中产生的错误 如 socket.connect( en ...

  10. javascript addEventListener方法

    addEventListener是一个侦听事件并处理相应的函数. DOM方法 addEventListener() 和 removeEventListener()是用来分配和删除事件的函数. 这两个方 ...