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. Core 中文文档

    ASP.NET Core 中文文档 第二章 指南(1)用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序   原文:Your First ASP. ...

  2. linux-0.11抠代码-bootsect

    //bootfun.s .global asm_message .global asm_memmove .global asm_readsector .global asm_checkLBA .cod ...

  3. CodeForces 446B DZY Loves Modification

    题意: k次操作  每次选择一行或一列  得到所选数字的和  并将所选数字同一时候减去p  问最多得到多少 思路: 重点在消除行列间的相互影响 因为每选一行全部列所相应的和都会-p  那么假设选了i次 ...

  4. java与C#的简单比较

    刚刚看完java视频,做了个简单图: 新知识不多,大多是与以往知识的相互碰撞,一下做了java与C#的简单比较:                         Java C# 主类名与文件名 必须一 ...

  5. C#.Net操作XML方法二

    上面那篇博客,在上面那面博客中是通过System.Xml命名空间中的类来实现对XML文件的创建.删除和改动等操作.接下来再介绍一种方法,在整个的操作过程中,仅仅只是换了个类而已,没什么大惊小怪的. D ...

  6. eclipse不能自己主动弹出提示的解决的方法

    曾经碰到过好几次eclipse不能自己主动弹出提示的情况,每次总是弄好之后就不再管它,结果下次遇到同样的问题,又到网上去搜索一大堆答案非常多都不能解决实际问题,费了时间还没有效果,如今这里记录下来下面 ...

  7. sql: PL/SQL proc

    A PL/SQL block has the following structure: [DECLARE declaration_statements ] BEGIN executable_state ...

  8. QT学习小技巧

    原地址:http://blog.csdn.net/ykm0722/article/details/6947250 转载: 分享在比赛中写代码时,发现的几个对写程序很有用的小段代码,虽小但是在我的软件中 ...

  9. 安装bower

    1.前提事先安装好node 和 npm D:\DEVELOP\HTML>node -v v0.10.29 D:\DEVELOP\HTML>npm -v 1.4.14 2.安装bower n ...

  10. FZOJ2111:Min Number

    Problem Description Now you are given one non-negative integer n in 10-base notation, it will only c ...