论文部分内容阅读
【摘要】XML已逐渐成为网络上的主流语言。本文使用XMark数据集测试了三种主流XML解析工具的性能。
【关键词】XML;XMark;解析
Performance Evaluation of XML parse tools
Lei Jie Xia LingLin
【Abstract】XML is becoming the dominant network language. In this paper we use Xmark(a kind of dataset) to test the performance of third mainstream parser tools.
【Key words】XML;XMark;Parser
【中图分类号】TP319
【文献标识码】B
【文章编号】1005-250X(2007)12-0105-02
随着XML成为Web上信息表示和数据交换的国际标准,对XML的查询受到人们越来越多的关注,先后出现了很多以XML数据为查询对象的查询工具。如何从众多工具中选择合适的一种,性能是主要考虑的问题。因此,提出适当的评价指标,评价方法及实验设计,比较不同存储方式对性能的影响,进行定性和定量的研究,对于在不同应用要求下选择何种查询工具具有一定的参考意义。
1 XML查询工具
目前主流的XML数据查询工具主要有二种:JDOM、Dom4j和MSXML。JDOM是对一个MXL文档及其简单的Java表示法。从它们得介绍来看,它们三种工具运行平台都十分广泛,都有很强的适用性,下面我们对这些XML数据查询工具的性能进行分析。
2 评价方法
一般系统把查询响应时间作为衡量性能的指标。影响查询时间的因素可能来自多个方面,譬如主机软硬件环境,查询语言及其实现方式,查询数据的大小,查询目标的位置等,我们通过XMark[1]基准来屏蔽它们的差异,从而使测试结果更具有说服力。图1为XMark文档的DTD结构图。

图1 XMark的DTD结构图
XMark项目组提供了共20个查询的XQuery[2]表达式,分别测试系统对不同种类查询的响应情况,反映系统不同方面的性能。目前完全支持XQuery的查询器并不多,理论上也可以才用其它查询语言实现其查询语义,比如XPath[3]。
为了让测试更容易操作,结果的意义更明确,在测试中我们不考虑实际应用中可能会有的网络负荷、通信代价和结果输出的转换,全部工作都在同一台机器上完成。
3 实验设计
实验在同一软硬件环境下(MS Windows XP Professional 2002,Intel CPU Pentium 1.6GHZ,256MB Memory)进行。在XMark框架下对不同数据量进行测试。实验选用了XMark查询中的4个查询语句,这四个查询语句具有一定的典型性,Q1为带有条件的查询语句,Q8为同时查询多个XML元素的查询语句,Q15为查询路径较长的查询语句。下面分别给出了它们的XPath表达式:
Q1[4](精确匹配):返回ID为“person0”的人名。
XPath:/site/people/person[@id=“person0”]/name
Q8(修整参考):列出人名和他们所购买物品的数量。
XPath:/site/people/person/name|count(/site/closed_auctions/close_auction)
Q15(路径遍历):打印已结束拍卖的注解中的关键词。
XPath:/site/closed_auctions/closed_auction/annotation/description/parlist/listitem/text/emph/keyword
我们编程实现了上述三个语句的测试。其中JDOM的测试代码关键部分如图2所示。
SAXBuilder sb=new SAXBuilder();
Document doc=sb.build(new FileInputStream(“test.xml”));
List els=XPath.selectNodes(doc.getRootElement(),query);
图2 JDOM的测试代码
Dom4j的测试代码关键部分如图3所示。
SAXReader reader=new SAXReader();
Document doc=reader.read(new File(“test.xml”));
List els=doc.selectNodes(query);
图3 Dom4j的测试代码
MSXML的测试代码关键部分如图4所示。
CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr=pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));
pDoc->load(“test.xml”);
MSXML2::IXMLDOMNodeListPtr pNodeList= pDoc->selectNodes(query);
图4 MSXML的测试代码
4 实验结果及分析
执行图2,图3,图4的代码后,我们得到了表1,表2和表3的执行结果,通过对结果分析我们可以观察出MSXML解析工具是最快的。而且三个工具不管文档的大小如何变化也无论测试语句如何变化,总体来说执行时间相当。

5 结束语
通过对JDOM、Dom4j和MSXML三个工具的测试,我们可以知道MSXML的性能在它们中间是最好的。如果并没有指定特定的编译语言,MSXML是一个不错的编译工具。
参考文献
[1] Albrecht Schmidt.XMark:A Benchmark for XML Data Management[C].In:Proceedings of the 28th VLDB Conference,Hong Kong,China,2002:1236~1247
[2] D.Chamberlin,D.Florescu,J.Robie,J.Simeon,and M.Stefanescu. XQuery:A Query Language for XML[P].http://www.w3.org/TR/xquery,February 2001:1475~1486
[3] XML Path Language(XPath) Version 1.0[DB/OL]. W3C Recommendation 16. http://www.w3.org/ TR/xpath,1999-11
[4] 於志勇、杨志义、 於志文、李长德.XML数据存储方式的性能评价研究[J].计算机工程与应用,2006.17:171~173
收稿日期:2007-12-10
【关键词】XML;XMark;解析
Performance Evaluation of XML parse tools
Lei Jie Xia LingLin
【Abstract】XML is becoming the dominant network language. In this paper we use Xmark(a kind of dataset) to test the performance of third mainstream parser tools.
【Key words】XML;XMark;Parser
【中图分类号】TP319
【文献标识码】B
【文章编号】1005-250X(2007)12-0105-02
随着XML成为Web上信息表示和数据交换的国际标准,对XML的查询受到人们越来越多的关注,先后出现了很多以XML数据为查询对象的查询工具。如何从众多工具中选择合适的一种,性能是主要考虑的问题。因此,提出适当的评价指标,评价方法及实验设计,比较不同存储方式对性能的影响,进行定性和定量的研究,对于在不同应用要求下选择何种查询工具具有一定的参考意义。
1 XML查询工具
目前主流的XML数据查询工具主要有二种:JDOM、Dom4j和MSXML。JDOM是对一个MXL文档及其简单的Java表示法。从它们得介绍来看,它们三种工具运行平台都十分广泛,都有很强的适用性,下面我们对这些XML数据查询工具的性能进行分析。
2 评价方法
一般系统把查询响应时间作为衡量性能的指标。影响查询时间的因素可能来自多个方面,譬如主机软硬件环境,查询语言及其实现方式,查询数据的大小,查询目标的位置等,我们通过XMark[1]基准来屏蔽它们的差异,从而使测试结果更具有说服力。图1为XMark文档的DTD结构图。

图1 XMark的DTD结构图
XMark项目组提供了共20个查询的XQuery[2]表达式,分别测试系统对不同种类查询的响应情况,反映系统不同方面的性能。目前完全支持XQuery的查询器并不多,理论上也可以才用其它查询语言实现其查询语义,比如XPath[3]。
为了让测试更容易操作,结果的意义更明确,在测试中我们不考虑实际应用中可能会有的网络负荷、通信代价和结果输出的转换,全部工作都在同一台机器上完成。
3 实验设计
实验在同一软硬件环境下(MS Windows XP Professional 2002,Intel CPU Pentium 1.6GHZ,256MB Memory)进行。在XMark框架下对不同数据量进行测试。实验选用了XMark查询中的4个查询语句,这四个查询语句具有一定的典型性,Q1为带有条件的查询语句,Q8为同时查询多个XML元素的查询语句,Q15为查询路径较长的查询语句。下面分别给出了它们的XPath表达式:
Q1[4](精确匹配):返回ID为“person0”的人名。
XPath:/site/people/person[@id=“person0”]/name
Q8(修整参考):列出人名和他们所购买物品的数量。
XPath:/site/people/person/name|count(/site/closed_auctions/close_auction)
Q15(路径遍历):打印已结束拍卖的注解中的关键词。
XPath:/site/closed_auctions/closed_auction/annotation/description/parlist/listitem/text/emph/keyword
我们编程实现了上述三个语句的测试。其中JDOM的测试代码关键部分如图2所示。
SAXBuilder sb=new SAXBuilder();
Document doc=sb.build(new FileInputStream(“test.xml”));
List els=XPath.selectNodes(doc.getRootElement(),query);
图2 JDOM的测试代码
Dom4j的测试代码关键部分如图3所示。
SAXReader reader=new SAXReader();
Document doc=reader.read(new File(“test.xml”));
List els=doc.selectNodes(query);
图3 Dom4j的测试代码
MSXML的测试代码关键部分如图4所示。
CoInitialize(NULL);
MSXML2::IXMLDOMDocumentPtr pDoc;
HRESULT hr=pDoc.CreateInstance(_uuidof(MSXML2::DOMDocument40));
pDoc->load(“test.xml”);
MSXML2::IXMLDOMNodeListPtr pNodeList= pDoc->selectNodes(query);
图4 MSXML的测试代码
4 实验结果及分析
执行图2,图3,图4的代码后,我们得到了表1,表2和表3的执行结果,通过对结果分析我们可以观察出MSXML解析工具是最快的。而且三个工具不管文档的大小如何变化也无论测试语句如何变化,总体来说执行时间相当。

5 结束语
通过对JDOM、Dom4j和MSXML三个工具的测试,我们可以知道MSXML的性能在它们中间是最好的。如果并没有指定特定的编译语言,MSXML是一个不错的编译工具。
参考文献
[1] Albrecht Schmidt.XMark:A Benchmark for XML Data Management[C].In:Proceedings of the 28th VLDB Conference,Hong Kong,China,2002:1236~1247
[2] D.Chamberlin,D.Florescu,J.Robie,J.Simeon,and M.Stefanescu. XQuery:A Query Language for XML[P].http://www.w3.org/TR/xquery,February 2001:1475~1486
[3] XML Path Language(XPath) Version 1.0[DB/OL]. W3C Recommendation 16. http://www.w3.org/ TR/xpath,1999-11
[4] 於志勇、杨志义、 於志文、李长德.XML数据存储方式的性能评价研究[J].计算机工程与应用,2006.17:171~173
收稿日期:2007-12-10