`
bleet
  • 浏览: 59404 次
  • 性别: 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 ...

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

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

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

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

    读取xml文件,解析字符串

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

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

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

    解析xml格式字符串

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

    android SAX解析String类型 XML 字符串

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

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

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

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

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

    VC++解析字符串实例

    这可能涉及到对特定格式的字符串进行解析,例如日期、时间、IP地址等。 在`Test`文件中,可能包含了一个演示如何在VC6.0环境下使用C++进行字符串解析的源代码。这个程序可能包含了上述的一种或多种方法,通过实例...

    dom4j解析xml字符串实例

    dom4j解析xml字符串实例

    xml字符串转换为xml文档并解析。

    一般银行返回的字符串为xml报文,需先转换为xml文档方便解析。

    AjaxWithServlet解析xm字符串及xml文件

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

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

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

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,这些参数由逗号分隔,并在`AND`语句中拼接`OR`子句来实现动态查询。这种场景在处理用户多选过滤条件时非常常见,比如在一个搜索框中,...

    c#生成XML字符串

    c#生成XML字符串,简单易懂,中间过程不生成XML文件,不用担心多个操作的访问问题,返回结果为标准的XMl格式。

    PB 解析xml格式串

    在“PB解析xml格式串”的主题中,我们主要关注如何将XML格式的数据转换为Protocol Buffers的二进制格式,以便于高效地存储和传输。以下是一些相关的知识点: 1. **Protocol Buffers介绍**:PB是一种高效的序列化...

Global site tag (gtag.js) - Google Analytics