`
bleet
  • 浏览: 59001 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对解析字符串形式xml的思考

XML 
阅读更多
有一个字符串,这个字符串是xml格式,怎么解析它最好呢?

当然是针对稍微大一点的xml字符串而言,如果都是一点点,那不管用什么工具解析,效率不会有太大区别。

内存的使用方面:

虽然字符串已经加载到内存中了,但是如果被xml解析器解析的话,解析器还是会再加载自己的单独一份内存,故而流的解析方式是最省内存的。

解析耗时方面:

因为字符串是已经被加载到内存中了,所以能对字符串直接进行解析是最快的,但是可惜的是到目前为止我还没有发现哪个xml解析器会直接解析xml格式的字符串,他们都是把字符串重新加载为一个InputStream,然后进入和解析文档同一入口的解析流程。
值得一提的是dom4j提供了一个parseText(String s)方法,返回Document,但是打开源码不难发现,那只是一个假象。附上dom4j源码方法:
	public static Document parseText(String text) throws DocumentException {
		Document result = null;

		SAXReader reader = new SAXReader();
		String encoding = getEncoding(text);

		InputSource source = new InputSource(new StringReader(text));
		source.setEncoding(encoding);

		result = reader.read(source);

		// if the XML parser doesn't provide a way to retrieve the encoding,
		// specify it manually
		if (result.getXMLEncoding() == null) {
			result.setXMLEncoding(encoding);
		}

		return result;
	}


所以既然大家都是解析一个InputStream,那当然是SAX或者StAX这种解析xml流的方式最快了效率最高最省内存了。

最后,我认为一般以字符串形式呈现的xml,应该都很小,那么用什么方式去解析如果对性能不是特别苛刻的话,可以不考虑,用户感知不到并且体验良好就是王道。
分享到:
评论

相关推荐

    java解析xml字符串

    在给定的代码示例中,我们看到了如何使用JDOM库来解析一个XML字符串,并对其进行操作。下面我们将详细解析这个过程: 1. **初始化XML源**:首先,将XML字符串转化为`StringReader`对象,这是为了将字符串转换为可以...

    PB解析XML字符串 把XML 变为数据窗口

    标题中的“PB解析XML字符串 把XML 变为数据窗口”指的是使用PowerBuilder(PB)这一编程工具,处理XML格式的数据,并将其转换成数据窗口对象的过程。数据窗口是PowerBuilder中的一个核心组件,用于显示、编辑和管理...

    纯C语言解析xml字符串

    纯C语言解析xml字符串,有实例,保证可用,含makefile xmlparse.c xmlparse.h testxml.c 目录:/export/home/chcard/testxml 日志:/export/home/chcard/log testxml.c 是一个测试用例,包含了常用的方法,并有注解 ...

    字符串转化为XML文件

    字符串转化为XML文件 本文将详细介绍字符串转化为XML文件的知识点,包括XML文件的基本结构、StringBuilder类的使用、XML文档对象模型(DOM)、XML文件的保存等。 XML文件的基本结构 XML(Extensible Markup ...

    C++解析xml文档或者xml字符串方法

    在C++中,解析XML文档或XML字符串是常见的任务,特别是在需要与JavaScript或其他不支持指针的语言交互时。本文将详细介绍如何在Visual Studio 2010环境下利用Microsoft的MSXML库来处理XML数据。 首先,让我们看看...

    xml字符串解析

    本文将深入探讨如何将XML数据转化为字符串形式,并利用DOM4J库进行解析。 XML字符串解析首先需要理解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text)等构成,元素是XML的最基本组成...

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

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    单片机解析字符串命令示例

    在本项目中,我们将利用其串行通信接口(UART)接收来自外部设备(如PC或移动设备)的字符串命令,并对这些命令进行解析,进而控制LED灯的亮灭。 串口通信(UART)是单片机与外部设备通信的一种简单且常用的方式,...

    JAVA JAXB 解析XML嵌套子节点为字符串

    当我们面临XML文档中存在嵌套子节点,并且希望将其解析为字符串时,JAXB提供了一种有效的方法。 首先,我们需要理解XML文档的基本结构。XML是一种可扩展标记语言,它通过标签来定义元素和数据,允许数据以层次结构...

    读取xml文件,解析字符串

    读取xml文件,解析字符串,详细的代码操作

    使用javascript解析xml文件或xml格式字符串中文WORD版

    资源名称:使用Javascript解析xml文件或xml格式字符串 中文WORD版   内容简介: 本文档主要讲述的是使用Javascript解析xml文件或xml格式字符串;javascript中,不论是解析xml文件,...

    解析xml格式字符串

    计息xml格式的字符串,封装到Map,Object>集合中

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

    总结来说,将string类型的XML字符串转换为JSON字符串是通过解析XML字符串并构建相应的JSON对象来完成的。这个过程通常需要借助特定的库,如Java中的`org.json`。理解XML和JSON的结构差异,以及如何利用这些库进行...

    android SAX解析String类型 XML 字符串

    "SAX解析String类型XML字符串"就是一种高效且节省内存的方式去解析XML数据,特别是当XML文件较大时,SAX解析器优于DOM解析器,因为它不需要一次性加载整个XML到内存中。下面我们将深入探讨这一主题。 首先,XML...

    js的XML解析器 可以解析XMl文件和XML字符串

    JavaScript中的XML解析器是用于处理XML数据的关键工具,它允许开发者在浏览器环境中解析XML文档或者XML字符串,从而在Web应用中有效地使用这些数据。XML(eXtensible Markup Language)是一种结构化数据语言,常用于...

    xml格式的字符串转换成List

    当我们需要将XML格式的字符串转换为List对象时,这通常涉及到数据解析的过程。这篇博客“xml格式的字符串转换成List”提供了相关的方法和步骤,以下是对这个主题的详细讲解。 首先,理解XML字符串。XML字符串是由一...

    PB字符串转XML文件,解决PB12.5创建UTF-8文件BOM问题(powerbuilder 12.5)

    由于项目需要,需要字符串转为XML文件,直接用Fileopen进行EncodingUTF8编码后,发现文件实际为UTF-8 BOM编码 问度娘发现有相同问题,但解决方式是利用新建一个UTF-8的TXT文件后,再进行COPY加内容。感觉这样操作...

    AjaxWithServlet解析xm字符串及xml文件

    当Ajax请求到达Servlet时,Servlet会解析请求中的数据,然后对XML字符串或XML文件进行处理。 对于XML字符串的解析,JavaScript提供了DOM(Document Object Model)API。XML文档被解析为一个节点树,可以通过DOM方法...

    xml解析文件的两种方式

    - 支持修改:DOM允许在解析后对文档进行修改并保存回文件。 缺点: - 内存消耗大:对于大型XML文件,DOM可能会消耗大量内存,因为它需要一次性加载整个文档。 - 性能问题:由于需要构建完整的DOM树,解析速度相对较...

    C# 方式生成xml格式字符串

    生成xml格式字符串、序列化XML 对象=》XML文本、反序列化 XML文本=》对象 等方法,对象和xml之间的相互转换、datatable方式转换为xml文本的工具类方法 C#语言

Global site tag (gtag.js) - Google Analytics