1.java自带的DOM解析.
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
public class ReaderXmlForDOM {
public static void main(String args[]) {
String text ="<XML><A>123</A><B>whl123</B><C>亮亮</C><D>1</D><E>1</E><F>165074</F><G>贫穷</G><H>1698.0</H><I>初级士官</I><J>湖南</J><K>常德</K><L>1</L></XML>"
long begin = System.currentTimeMillis();
parse( text );
long after = System.currentTimeMillis();
System.out.println("DOM用时"+(after-begin)+"毫秒");
}
public static void parse(String protocolXML) {
try {
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder
.parse(new InputSource(new StringReader(protocolXML)));
Element root = doc.getDocumentElement();
NodeList books = root.getChildNodes();
if (books != null) {
for (int i = 0; i < books.getLength(); i++) {
Node book = books.item(i);
System.out.println("节点=" + book.getNodeName() + "\ttext="
+ book.getFirstChild().getNodeValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
我当时dom解析用时是个不稳定的值在62-78毫秒之间.
以下的三种方法mian方法里面都是一样的解析那段字符串,记录用时,就不在贴出, 只贴出所用的解析部分
2.java自带的SAX解析.
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;
public class ReaderXmlForSAX {
public static void parse(String protocolXML) {
try {
SAXParserFactory saxfac = SAXParserFactory.newInstance();
SAXParser saxparser = saxfac.newSAXParser();
TestSAX tsax = new TestSAX();
saxparser.parse(new InputSource(new StringReader(protocolXML)),tsax);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class TestSAX extends DefaultHandler{
private StringBuffer buf;
private String str;
public TestSAX(){
super();
}
public void startDocument() throws SAXException{
buf=new StringBuffer();
System.out.println("*******开始解析XML*******");
}
public void endDocument() throws SAXException{
System.out.println("*******XML解析结束*******");
}
public void endElement(String namespaceURI,String localName,String fullName )throws SAXException{
str = buf.toString();
System.out.println("节点="+fullName+"\tvalue="+buf+" 长度="+buf.length());
System.out.println();
buf.delete(0,buf.length());
}
public void characters( char[] chars, int start, int length )throws SAXException{
//将元素内容累加到StringBuffer中
buf.append(chars,start,length);
}
}
SAX用时是62毫秒,最快的.但是需要多写一个类
3.DOM4J解析,需要下载对应的jar包
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
public class ReaderXmlForDOM4J {
//DOM4j解析XML
public static void parse(String protocolXML) {
try {
Document doc=(Document)DocumentHelper.parseText(protocolXML);
Element books = doc.getRootElement();
System.out.println("根节点"+books.getName());
// Iterator users_subElements = books.elementIterator("UID");//指定获取那个元素
Iterator Elements = books.elementIterator();
while(Elements.hasNext()){
Element user = (Element)Elements.next();
System.out.println("节点"+user.getName()+"\ttext="+user.getText());
List subElements = user.elements();
// List user_subElements = user.elements("username");指定获取那个元素
// System.out.println("size=="+subElements.size());
// for( int i=0;i<subElements.size();i++){
// Element ele = (Element)subElements.get(i);
// System.out.print(ele.getName()+" : "+ele.getText()+" ");
// }
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
DOM4J的用时为140毫秒,慢 并且还需要单独的jar包
4.JDOM解析,需要下载对应的jar包
import java.io.StringReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;
public class ReaderXmlForJDOM {
public static void parse(String protocolXML) {
SAXBuilder builder=new SAXBuilder(false);
try {
Document doc = builder.build(new InputSource(new StringReader(protocolXML)));
Element eles = doc.getRootElement(); // 得到根元素
System.out.println("根节点"+eles.getName());
List<Element> list = eles.getChildren(); // 得到元素的集合
//List studentList = students.getChildren("student"); // 得到指定元素(节点)的集合
if( list!=null){
for (int i = 0; i < list.size(); i++) {
Element book = (Element)list.get(i);
System.out.println("节点=" + book.getName() + "\ttext="
+ book.getValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
JDOM的用时为125毫秒,比较慢 并且还需要单独的jar包
分享到:
相关推荐
java解析xml字符串,添加属性,更新属性等
将string类型的xml转为JSON字符串,利用JSONObject处理JSON串
实现 XML字符串转VO对象的实现 1.0:标签读取,属性读取,List类型标签实现 以下是 测试说明 原XML: <?xml version="1.0" encoding="UTF-8"?> <HEADER NAME="HEADERname" name_cn="头名称">标签text...
dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中
主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧,需要的朋友可以参考下
java中xml文件的处理及oracle中xmltype的插入和读取.pdf
java实现word文档到xml文档转换浅析
java程序,从键盘输入字符串知道按确定键结束输入,将字符串保存于一个文件中,再从文件读取出来进行排序,将排序后的字符串保存在另一个文件中,从屏幕打印出排序后的字符串。
XML工具类,傻瓜式操作,既支持生成XML字符串,也支持从XML字符串读取以及从XML文件读取。支持自定义 namespace
下面小编就为大家带来一篇java实现利用String类的简单方法读取xml文件中某个标签中的内容。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
xml转换成json格式,绝java的,xml文件读取,然后转换成Json格式,代码通俗易懂,包括jar包,绝对有益。对于想xml文件转换成json格式的同事们,快快下载。good luck
java 写的转pdf代码,支持表格内容的中文换行,css样式随意设置。源代码亲测好用
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源代码...
java.util 包含 collection 框架、遗留的 collection 类、事件模型、日期和时间设施、国际化和各种实用工具类(字符串标记生成器、随机数生成器和位数组)。 java.util.concurrent 在并发编程中很常用的实用工具类...
一个简单的CS模式的聊天软件,用socket实现,比较简单。 凯撒加密解密程序 1个目标文件 1、程序结构化,用函数分别实现 2、对文件的加密,解密输出到文件 利用随机函数抽取幸运数字 简单 EJB的真实世界模型(源...
XML解析封装工具类 将XML格式的字符串解析成JAVA对象,方便读取XML内容; 将java对象封装成XML格式
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到...
[ini4j] 是一个简单的Java类库,用来读写Windows的ini配置文件。同时还包含一个 Java Perferences API 的实现。 拒绝服务测试工具 Port Groper PortGroper 是一款java写的开源拒绝服务测试工具,它不是僵尸网络类的...
设定字符串为“张三,你好,我是李四” 产生张三的密钥对(keyPairZhang) 张三生成公钥(publicKeyZhang)并发送给李四,这里发送的是公钥的数组字节 通过网络或磁盘等方式,把公钥编码传送给李四,李四接收到张三编码后...
8.编码转换,怎样实现将GB2312编码的字符串转换为ISO-8859-1编码的字符串。 9.Java中访问数据库的步骤,Statement和PreparedStatement之间的区别。 10.找出下列代码可能存在的错误,并说明原因: 二、JSP&Servlet...