`
nddjava
  • 浏览: 110448 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

java中XML格式的字符串4读取方式的简单比较

 
阅读更多
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包
分享到:
评论
1 楼 fuyu_oo 2015-09-17  
多谢 正需要  用的第一种 java自带的

相关推荐

    java解析xml字符串

    通过以上分析,我们可以看到使用JDOM库在Java中解析和操作XML字符串的完整过程。这包括了如何将XML字符串转换为可读写的数据结构,以及如何遍历、读取和修改XML文档的元素和属性。这对于在Java应用程序中处理动态...

    将string类型xml字符串转为json字符串

    在上述代码中,`XML.toJSONObject(String xml)`方法接收一个XML字符串并返回一个`JSONObject`。这个方法会解析XML,保留其原有的层次结构,并将XML元素转换为JSON键值对。转换后的JSON字符串可以通过`toString()`...

    格式化xml字符串,并生成xml文件

    本文将围绕“格式化XML字符串并生成XML文件”这一主题展开,结合提供的标签“源码”和“工具”,探讨如何通过Java编程实现这一功能。 首先,我们有两个Java源代码文件,即`XMLFileUtil.java`和`XMLFormatUtil.java`...

    2017XML字符串转对象Object 实现工具

    实现 XML字符串转VO对象的实现 1.0:标签读取,属性读取,List类型标签实现 以下是 测试说明 原XML: &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;HEADER NAME="HEADERname" name_cn="头名称"&gt;标签text...

    DOM4J 读取xml字符串

    **DOM4J 读取XML字符串** DOM4J 是一个非常强大的 Java XML API,它提供了丰富的功能,使得处理 XML 文件变得更加简单。DOM4J 的设计理念是简洁、灵活且高性能,它支持 SAX 和 DOM 解析,并提供了面向对象的接口。...

    xml字符串解析

    在Java中,我们可以使用DOM4J来解析XML字符串,以下是一个简单的步骤: 1. **导入DOM4J库**:确保项目中已经引入了DOM4J的依赖,如果没有,可以添加对应的Maven或Gradle依赖。 2. **读取XML字符串**:从文件、网络...

    dom4j以String的方式读取XML的内容,并给String的值赋值,写入XML中

    在这个场景中,我们关注的是如何使用DOM4J以String的形式读取XML内容,然后将String的值赋给XML中的特定节点,最后将更新后的内容写回XML文件。下面我们将详细探讨这一过程。 1. **解析XML到String** 要将XML文件...

    java反射机制 字符串——java对象

    然而,如果需要将对象转换为XML格式,可以使用`javax.xml.bind.annotation.XmlRootElement`注解标记类,并利用Java的JAXB(Java Architecture for XML Binding)框架将对象转换为XML字符串。 另一方面,将字符串...

    word文件批量替换(word转xml、xml转字符串、doc转docx)

    这可以通过编程语言中的XML处理库完成,如Python的xml.etree.ElementTree模块,它提供了将XML树结构转换为字符串的功能。转换后,字符串可以被编码、解码,甚至进行搜索和替换操作。 最后,我们来看“doc转docx”。...

    java中xml文件的处理及oracle中xmltype的插入和读取.pdf

    Java 中 XML 文件的处理及 Oracle 中 XMLType 的插入和读取 Java 中 XML 文件的处理是指在 Java 应用程序中处理和操作 XML 文件的过程。在 Oracle 数据库中,XMLType 是一种特殊的数据类型,用于存储和处理 XML ...

    Java使用正则表达式提取XML节点内容的方法示例

    Java使用正则表达式提取XML节点内容的方法示例主要介绍了Java使用正则表达式提取XML节点内容的方法,结合具体实例形式分析了java针对xml格式字符串的正则匹配相关操作技巧。 一、正则表达式简介 正则表达式是指一...

    使用dom4j将xml字符串转换成Bean对象

    总结来说,dom4j提供了一种简洁的方式将XML字符串转换为Java Bean对象。通过创建一个工具类,我们可以定义一个通用的方法,根据XML结构自动填充Bean的属性。这种方式在处理XML数据到Java对象的映射时非常实用。在...

    java生成指定格式的XML

    Java生成指定格式的XML是一种常见的任务,特别是在软件开发中,我们经常需要动态地创建符合特定结构的XML文档。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,广泛应用于配置文件、数据交换和Web服务等...

    两种xml格式的读取方法

    这个方法首先初始化两个字符串变量`typeId`和`typeName`,然后再次利用`XmlDocument`加载XML文件。这次的XML格式如下: ```xml &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;id&gt;1 郑州 &lt;!-- ... other city ...

    DOM、SAX、DOM4J、JDOM、StAX生成XML并返回XML字符串形式

    在生成XML字符串时,DOM4J提供了简洁的API来构建和输出XML文档。 4. JDOM JDOM是另一个Java的XML处理库,它专注于提供纯Java解决方案。JDOM提供了一个基于树的API,类似于DOM,但设计更简洁,易于使用。与DOM相比,...

    Java用DOM4J读取XML

    ### Java使用DOM4J读取XML知识点解析 #### 一、概述 在Java开发中,处理XML文件是一项常见的任务。DOM4J是一个简单且功能强大的Java库,用于处理XML文档。它提供了类似于DOM的API,但更为轻量级且易于使用。本篇将...

    java 读取文本并解析字符串

    在Java编程语言中,读取文本文件和解析字符串是常见的任务,这在处理日志、配置文件、数据导入导出等场景中尤为常见。本文将详细介绍如何使用Java进行文本读取以及字符串解析。 首先,我们要了解Java中读取文本文件...

    jdom解析XML文件and把字符串解析成XML

    下面是一个示例代码,展示了如何将一个XML字符串转换为JDOM的`Document`对象: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import java.io.StringReader;...

    java生成指定格式的xml和解析对于的xml

    本项目主要关注如何在Java中生成指定格式的XML字符串以及如何解析XML字符串得到对应的Map格式内容。 首先,让我们详细探讨Java生成XML的过程。在Java中,我们可以使用DOM(文档对象模型)、SAX(简单API for XML)...

    java利用jdom读取xml文件

    5. 保存修改:如果需要保存对XML文件的修改,可以使用`XMLOutputter`类将`Document`对象转换回XML字符串,然后写回文件: ```java XMLOutputter outputter = new XMLOutputter(); String xmlString = outputter....

Global site tag (gtag.js) - Google Analytics