在android中获取节点的各个值

时间:2013-11-25 11:09:11

标签: android xpath

在这里,我正在使用xpath成功解析xml文件。但输出并不像我预期的那样。我在这里做的是将.xml解析为列表视图。列表视图显示已解析的数据但不是以正确的方式。下面是我的.xml文件,

<main>
       <category id="Love">
                <item>Love u</item>
                <item>Love u too</item>

        </category>

          <category id="Birthday">
                <item>Happy Bday</item>
                <item>Many Many Happy</item>
                <item>Have a blast</item>
        </category>
</main>

下面是我提供输出的代码。

InputSource inputSrc = new InputSource(getResources().openRawResource(R.raw.detail));
        XPath xpath = XPathFactory.newInstance().newXPath();
        String expression = "//main/category[@id=" + "'" + detail + "'" +  "]";
        NodeList nodes = (NodeList)xpath.evaluate(expression, inputSrc, XPathConstants.NODESET);

        // if node found
        if(nodes != null && nodes.getLength() > 0) {
            mDetail.clear();
            data.clear();
            int len = nodes.getLength();
            for(int i = 0; i < len; ++i) {

                Node node = nodes.item(i);
                mDetail.add(node.getTextContent());

                Toast.makeText(this, node.getNodeValue(),Toast.LENGTH_SHORT).show();
            }

        }
        else
        {
             Toast.makeText(this, "No Data",Toast.LENGTH_SHORT).show();
             mDetail.clear();
        }

但在这里,我没有以适当的方式获得输出。列表视图显示数据,但是在单行中,如下图所示。

enter image description here

我想要indib = vidual列表视图中的数据。我错过了什么?

1 个答案:

答案 0 :(得分:1)

 String expression = "//main/category[@id=" + "'" + detail + "'" +  "]"  + "/item";

改变你的表达......