dom4j的用法
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的用法的更多相关文章
- 使用面向对象对XML进行解析:dom和dom4j的用法
这是一个比较简单的例子,主要是运用面向对象的思想,对XML文件进行解析,用dom和dom4j方法 <?xml version="1.0" encoding="utf ...
- Java Dom4j XML用法总结
1.新建XML文档: Document doc = DocumentHelper.createDocument(); Element root = d ...
- 转:在java中使用dom4j解析xml
JAVA 使用Dom4j 解析XML Java DOM4J Parser - Parse XML Document Dom4j下载及使用Dom4j读写XML简介 在java中使用dom4j解析xml ...
- dom4J 学习
Java给我们提供了标准的W3C接口实现,已完成对XML的处理.主要有两大类,分别是DOM操作,SAX解析.DOM可以将XML加载到内存中,对XML进行方便的增删查改.由于是将整个XML都加载到内存中 ...
- 08-Xml & Tomcat
Xml & Tomcat Xml >eXtendsible markup language 可扩展的标记语言 XML 有什么用? 1. 可以用来保存数据 2. 可以用来做 ...
- Xml & Tomcat
文档声明: 简单声明, version : 解析这个xml的时候,使用什么版本的解析器解析 <?xml version="1.0" ?> encoding : 解析xm ...
- Java就业班day09_xml&tomcat
Xml & Tomcat Xml eXtendsible markup language 可扩展的标记语言 XML 有什么用? 可以用来保存数据 可以用来做配置文件 数据传输载体 定义xml ...
- 第70节:Java中xml和tomcat
第70节:Java中xml和tomcat 前言: 哭着也要看完,字数: jdbc crud - statement dao java.sql.Driver The interface that eve ...
- 中阶 d04.1 xml解析
##XML 解析 > 其实就是获取元素里面的字符数据或者属性数据. ###XML解析方式(面试常问) > 有很多种,但是常用的有两种. * DOM * SAX 
在delphi中,数据集是最常用数据存取方式.因此,必须建立JSON与TDataSet之间的互转关系,实现数据之间通讯与转换.值得注意的是,这只是普通的TDataset与JSON之间转换,由于CDS包 ...
- NSDate与时间戳的那点事
对于项目中常常使用的时间来说,通过时间戳的形式进行数据的操作能带来极大的方便,以下就时间戳的生成和转换通过Demo的形式进行解说 声明一个时间类型的变量: // 获取当前的时间 // 以下的第一个方法 ...
- MySQL 暂时文件夹
MySQL数据文件夹/data/mysql所在的上层文件夹/data磁盘空间不足导致MySQL启动失败,所以清理了/data文件夹下除了mysql子文件夹外的其它无用文件夹.重新启动发现还是失败.检查 ...
- Swift - 设置网格UICollectionView的单元格间距
要设置单元格cell的间距(水平间距,垂直间距)可进行如下设置: 方法1:在storyboard中设置 选择Collection View后在面板里设置Min Spacing相关属性(这里也可以设置单 ...
- 一个关于native sql的程序
*&---------------------------------------------------------------------* *& Report ZHR_BPM11 ...
- EL表达式(2)
本篇介绍EL表达式的隐式对象,如同JSP一样,EL也封装了11个隐式对象,通过这些隐式对象可以在EL表达式中直接使用. 在使用EL时,其实EL是先看标识符是否是其隐式对象之一,如果不是,才从四个域(p ...
- c# in depth之泛型的类型约束详细
类型约束 1.引用类型约束 这种约束(表示成T:class,必须是为类型参数指定的第一个约束)用于确保使用的类型实参是引用类型,这可能是任何类,接口,数组,委托或者已知是引用类型的另一个类型参数. 例 ...
- nohup命令与&区别,jobs,fg,bg,Ctrl-Z、Ctrl-C、Ctrl-D
&方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/my ...
- IOS 轻量级数据持久化 DataLite
开发的过程中我们经常要保存一些配置信息,一般简单的是用 NSUserDefaults [[NSUserDefaults standardUserDefaults] objectForKey:key]; ...
- UVA11069 - A Graph Problem(DP)
UVA11069 - A Graph Problem(DP) 题目链接 题目大意:给你n个点.要你找出有多少子串符合要求.首先没有连续的数字,其次不能再往里面加入不论什么的数字而不违反第一条要求. 解 ...