Java 如何从xml文件中列出特定属性

Java 如何从xml文件中列出特定属性,java,android,xml,xpath,Java,Android,Xml,Xpath,我有一个xml文件,看起来像这样 <a> <bb> <c date="20110706" time="1:20" name1="john" name2="jen" nick1="johnny" nick2="jenny" /> <c date="20110806" time="2:20" name1="steven" name2="judith" nick1="steve" nick2="judy" /> </bb> </a>

我有一个xml文件,看起来像这样

<a>
<bb>
<c date="20110706" time="1:20" name1="john" name2="jen" nick1="johnny" nick2="jenny" />
<c date="20110806" time="2:20" name1="steven" name2="judith" nick1="steve" nick2="judy" />
</bb>
</a>
我试图实现的是使用TextView以下面的格式一行接一行列出所有c行,注意我不希望包含nick1和nick2。我已经用arraylist阅读和测试了几个小时,但没有得到我想要的结果。这就是我希望xml中的所有c节点都在textview中列出的方式

日期:20110706-时间:1:20-他的名字:约翰-她的名字:珍

日期:20110806-时间:2:20-他的名字:史蒂文-她的名字:朱迪思

还有,是否可能在每行的每个名称旁边都有一个imageview

提前感谢您提供的任何帮助,我已经尝试了几个小时,但运气不佳,这让我发疯


编辑:只需执行“//a/bb/c”,我就可以得到xml的第一行,其中包含我想要的信息,但我如何继续下一行,依此类推

指定
XPathConstants.NODESET
returnType
作为
求值的第二个参数,并迭代结果:

final XPath xpath = XPathFactory.newInstance().newXPath();
final XPathExpression expr = xpath.compile("//a/bb/c");
final NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
    final NamedNodeMap attrs = nodes.item(i).getAttributes();
    final Node dateNode = attrs.getNamedItem("date");
    System.out.println(dateNode.getNodeName() + ":" + dateNode.getNodeValue());
}
final XPath=XPathFactory.newInstance().newXPath();
final XPathExpression expr=xpath.compile(“//a/bb/c”);
最终节点列表节点=(节点列表)表达式求值(doc,XPathConstants.NODESET);
对于(int i=0;i

我只显示了
date
属性的输出,但从本例中其他属性应该很明显。

指定
xpathcontents.NODESET
returnType
作为
计算
并迭代结果的第二个参数:

final XPath xpath = XPathFactory.newInstance().newXPath();
final XPathExpression expr = xpath.compile("//a/bb/c");
final NodeList nodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);
for (int i = 0; i < nodes.getLength(); i++) {
    final NamedNodeMap attrs = nodes.item(i).getAttributes();
    final Node dateNode = attrs.getNamedItem("date");
    System.out.println(dateNode.getNodeName() + ":" + dateNode.getNodeValue());
}
final XPath=XPathFactory.newInstance().newXPath();
final XPathExpression expr=xpath.compile(“//a/bb/c”);
最终节点列表节点=(节点列表)表达式求值(doc,XPathConstants.NODESET);
对于(int i=0;i

我只显示了
date
属性的输出,但是从这个例子中其他属性应该是显而易见的。

通过“//a/bb/c”我得到了我想要的第一行信息,但是我如何继续下一行,依此类推?通过“//a/bb/c”我得到了我想要的第一行信息,但是我如何继续下一行,等等?非常感谢您的帮助,我最终使用了dom和nodelist,因为我能够找到一个可以使用的示例。使用xpath而不是dom对此有好处吗?是否有一种简单的方法将我的第一个搜索“name”的方法和你的结合起来,这样我就可以搜索列表中的name,并将其显示在nodelist的顶部和下面的所有其他位置?非常感谢你的帮助,我最终使用了dom和nodelist,因为我可以从中找到一个示例。使用xpath而不是dom对此有好处吗?是否有一种简单的方法将我的第一种搜索“name”的方法和你的结合起来,这样我就可以在列表中搜索该名称,并将其显示在节点列表的顶部和下面的所有其他方法?