开发者

XPath error in Android

开发者 https://www.devze.com 2023-02-26 17:31 出处:网络
My goal is executing an XQuery using XPath. My XML file is: <?xml version=\"1.0\" encoding=\"UTF-8\"?>

My goal is executing an XQuery using XPath.

My XML file is:

<?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>

My Java code is:

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();
    }
}

When I launch this Java code the result is displayed on the console correctly (System.out.println).

But if I copy this code to my Android application and change System.out.println(nodes.item(i).getNodeValue()); to Text2.setText(nodes.item(i).getNodeValue()); (I have a TextView named Text2)

When I execute the code and I click the button the TextView stays empty (No error for Force Close)

Thank you in advance


Attribute names needs to start with '@' while using XPath in Android.
So change

[gouvernourat='Tunis']

To

[@gouvernourat='Tunis']

Refer http://developer.android.com/reference/javax/xml/xpath/package-summary.html for details.

0

精彩评论

暂无评论...
验证码 换一张
取 消