前端之家收集整理的这篇文章主要介绍了
xml解析神器PK,花落谁家?Jsoup Or Xpath?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
原文:点击打开链接
今天简单测了下使用Jsoup和Xpath解析XML的文件的方便程度,两者都可以完成解析,提取特定的元素或节点内容,但明显Jsoup更胜一筹,我们都知道Xpath是专业的xml结构化文档的查询语言,虽然语法功能强大,但是代码还是比较繁琐。虽然jsoup的出现,并不是专门用来解析XML使用的,但是使用jsoup这个轻巧的类库,我们可以完成网页抓取,HTML解析,模拟登陆等一些功能,jsoup完全仿Jquery的语法,提供了强大的操作DOM的能力,即高效又灵活,本篇,散仙仅仅通过一个简单的例子,来说明,jsoup如何以更少的代码,来完成更多的事。
解析的xml的例子如下:
- <?xmlversion="1.0"encoding="UTF-8"?>
-
- <inventory>
- bookyear="2000"title>SnowCrash</author>NealStephensonpublisher>Spectraisbn>0553380958price>14.95bookbookyear="2005">BurningTower>LarryNiven>Pocket>0743416910>5.99personyear="2014">你好>星际旅行>工业出版社>2555555555>53.5personbookyear="1995">Zodiac>0553573862>57.50>
测试功能如下:打印book下的标题和价格,先看下xpath的写法:
packagecom.testxpath;
- import
javax.xml.parsers.DocumentBuilder;
importjavax.xml.parsers.DocumentBuilderFactory;
importjavax.xml.xpath.XPath;
importjavax.xml.xpath.XPathConstants;
importjavax.xml.xpath.XPathExpression;
importjavax.xml.xpath.XPathFactory;
importorg.w3c.dom.Document;
importorg.w3c.dom.Node;
importorg.w3c.dom.NodeList;
publicclassXpathDemo{
staticvoidmain(String[]args)throwsException{
DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilderbuilder=factory.newDocumentBuilder();
Documentdoc=builder.parse("a.xml");
XPathFactoryxft=XPathFactory.newInstance();
XPathxpath=xft.newXPath();
XPathExpressionexpr=xpath.compile("//book/title//text()|//book/price//text()");//某个元素下的所有元素
Objectresult=expr.evaluate(doc,XPathConstants.NODESET);
NodeListnodes=(NodeList)result;
for(inti=0;i<nodes.getLength();i++){
Nodeitem=nodes.item(i);
System.out.println("节点名:"+item.getNodeName()+"节点值:"+item.getNodeValue());
}
}