<data xmlns:fsd="abc.org" xmlns:xlink="http://www.w3.org/1999/xlink">
<meta name="elapsed-time" value="46" />
<org-family>
<family-member id="5">
<publication-reference>
<document-id document-id-type="docdb">
<country>US</country>
<doc-number>3056228</doc-number>
<date>20160817</date>
</document-id>
</publication-reference>
</family-member>
<family-member id="2">
<publication-reference>
<document-id document-id-type="docdb">
<country>US</country>
<doc-number>2013315173</doc-number>
<date>20150430</date>
</document-id>
</publication-reference>
</family-member>
</org-family>
</data>
从上面的xml我想提取国家和日期节点值,下面是我的java代码
NodeList familyMembers = (NodeList) xPath.compile("//family-member//publication-reference//document-id[@document-id-type=\"docdb\"]//text()").evaluate(xmlDocument,XPathConstants.NODESET);
ArrayList mainFamily = new ArrayList();
for (int i = 0; i < familyMembers.getLength(); i++) {
mainFamily.add(familyMembers.item(i).getNodeValue());
}
但它提取了所有三个节点值(country, doc-number and date
),但我只需要两个节点值(country and date
),在for循环中我应该如何传递请求的节点值?
答案 0 :(得分:0)
选择document-id
节点后,//
运算符选择其所有后代,
然后text()
将每个转换为字符串。如果你只想处理一些下降节点,只需列出它们(构建一个明确的子元素序列)
你也可以摆脱昂贵的(和多余的!)//
运营商
尝试用
替换查询
&#34; // family-member / publication-reference / document-id [@ document-id-type = \&#34; docdb \&#34;] /(country,date)/ text()&#34 ; 德尔>