【发布时间】:2010-05-12 07:56:34
【问题描述】:
我喜欢用Xpath解析xml ins java,但是我在android上做同样的事情时,找不到XPath。
知道如何实现它。如果它不可能,那么任何其他快速的 android 解析器?
谢谢
启
【问题讨论】:
-
XML 树实例的 XPath 地址部分可能是解析 XML 文档的结果。
我喜欢用Xpath解析xml ins java,但是我在android上做同样的事情时,找不到XPath。
知道如何实现它。如果它不可能,那么任何其他快速的 android 解析器?
谢谢
启
【问题讨论】:
自 Android API Level 8(我认为那是 Android 2.2)以来,Android XPath 可用(即作为即用型实现),您可以找到更多信息here。
让您开始 - 在活动范围内尝试:
XPath xpath = XPathFactory.newInstance().newXPath();
String expression = "myNode";
NodeList nodes = (NodeList) xpath.evaluate(expression, parser, XPathConstants.NODESET);
“解析器”可以通过将您的 xml 文档放入您的 res/xml 文件夹来获得(您可能必须自己创建该 xml 文件夹)。然后您可以通过以下方式访问它:
//Do this withon the scope of an activity, you need the activitie's context!
Resources res = getResources();
//Get the xml file
//this is how you access the content of the xml folder
//you previously created in the res folder
parser = res.getXml(R.xml.yourxmlfile);
【讨论】:
parser = res.getXml(R.xml.yourxmlfile) 在对xpath.evaluate 的调用中触发以下异常:“javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Attempt to invoke interface method 'org.apache.xml.dtm.DTMAxisTraverser org. apache.xml.dtm.DTM.getAxisTraverser(int)' 在空对象引用上”。以这种方式获取parser 会产生一个XmlResourceParser 类型的对象。 xpath.evaluate 函数需要一个 InputSource,但这会触发异常。