gpt4 book ai didi

java - Android 中的 XPath 错误

转载 作者:数据小太阳 更新时间:2023-10-29 02:42:29 26 4
gpt4 key购买 nike

我的目标是使用 XPath 执行 XQuery。

我的 XML 文件是:

<?xml version="1.0" encoding="UTF-8"?>
<postes>
<poste>
<gouvernourat>Kairouan</gouvernourat>
<ville>Kairouan sud</ville>
<cp>3100</cp>
</poste>
<poste>
<gouvernourat>Tunis</gouvernourat>
<ville>Ghazela</ville>
<cp>1002</cp>
</poste>
</postes>

我的 Java 代码是:

package xmlparse;


import java.io.IOException;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathExpressionException;
import javax.xml.xpath.XPathFactory;

import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class QueryXML {
public void query() throws ParserConfigurationException, SAXException,
IOException, XPathExpressionException {
// Standard of reading a XML file
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder;
Document doc = null;
XPathExpression expr = null;
builder = factory.newDocumentBuilder();
doc = builder.parse("a.xml"); //C:\\Users\\aymen\\Desktop\\

// Create a XPathFactory
XPathFactory xFactory = XPathFactory.newInstance();

// Create a XPath object
XPath xpath = xFactory.newXPath();

// Compile the XPath expression
expr = xpath.compile("/postes/poste[gouvernourat='Tunis']/ville/text()");
// Run the query and get a nodeset
Object result = expr.evaluate(doc, XPathConstants.NODESET);

// Cast the result to a DOM NodeList
NodeList nodes = (NodeList) result;
for (int i=0; i<nodes.getLength();i++){
System.out.println(nodes.item(i).getNodeValue());
}
}

public static void main(String[] args) throws XPathExpressionException, ParserConfigurationException, SAXException, IOException {
QueryXML process = new QueryXML();
process.query();
}
}

当我启动此 Java 代码时,结果会正确显示在控制台上 (System.out.println)

但是如果我将此代码复制到我的 Android 应用程序并将 System.out.println(nodes.item(i).getNodeValue()); 更改为 Text2.setText(nodes. item(i).getNodeValue());(我有一个名为 Text2 的 TextView)

当我执行代码并单击按钮时,TextView 保持为空(Force Close 没有错误)

提前致谢

最佳答案

在 Android 中使用 XPath 时,属性名称需要以“@”开头。
所以改变

[gouvernourat='Tunis']

[@gouvernourat='Tunis']

引用http://developer.android.com/reference/javax/xml/xpath/package-summary.html了解详情。

关于java - Android 中的 XPath 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5717557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com