【发布时间】:2018-02-05 07:11:57
【问题描述】:
假设以下 XML :
<response>
<header>
<resultCode>0000</resultCode>
<resultMsg>OK</resultMsg>
</header>
<body>
<items>
<item>
<addr1>America</addr1>
<addr2>(Atlanta)</addr2>
</item>
<item>
<addr1>Canada</addr1>
<addr2>(Toronto)</addr2>
</item>
<item>
<addr1>France</addr1>
<addr2>(Paris)</addr2>
</item>
</items>
</body>
</response>
我想使用 XPath 选择几个 XML 元素。 所以,我在下面写了JAVA代码。
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder()
.parse(urlBuilder.toString());
XPath xpath = XPathFactory.newInstance().newXPath();
NodeList items = (NodeList) xpath.evaluate("//item", doc, XPathConstants.NODESET );
NodeList addrAll= (NodeList) xpath.evaluate("//item/addr1 | //item/addr2", doc, XPathConstants.NODESET);
System.out.println("length:"+addrAll.getLength());
for(int tmp=0; tmp<addrAll.getLength();tmp++){
System.out.println(addrAll.item(tmp).getTextContent());
}
结果是:
length:6
America
(Atlanta)
Canada
(Toronto)
France
(Paris)
但是,这不是我想要的。 我的预期输出:
length:3
America (Atlanta)
Canada (Toronto)
France (Paris)
希望你能理解我的问题。 我怎样才能编辑我的代码来做到这一点?
【问题讨论】:
-
我不明白你的问题!你问错了或解释错了!但据我了解,您希望在使用 println 时将它们放在 1 行中,因此您可以在每一行中将它们全部打印出来。