我有以下XML结构:
...
...
<CON>
<LANGUAGES>
<LANGUAGE>Deutsch</LANGUAGE>
<LANGUAGE>English</LANGUAGE>
</LANGUAGES>
<CON>
...
...
使用下面的代码,我正在尝试检索语言,但是当我尝试打印节点列表的长度时,它只返回1.
XPath xPath = XPathFactory.newInstance().newXPath();
NodeList nl = (NodeList)xPath.evaluate("/CU_DATA/CU/CON/LANGUAGES", document, XPathConstants.NODESET);
System.out.println(nl.getLength());
// Output: 1
我怎样才能获得这两种语言?
答案 0 :(得分:3)
我怎样才能获得这两种语言?
通过询问LANGUAGE
元素而不是LANGUAGES
- 毕竟, 只有一个LANGUAGES
元素。所以像这样:
NodeList nl = (NodeList)xPath.evaluate("/CU_DATA/CU/CON/LANGUAGES/LANGUAGE",
document, XPathConstants.NODESET);
或者,找到您当前正在执行的LANGUAGES
元素,然后只获取所有子节点。
答案 1 :(得分:0)
尝试:
NodeList nl = (NodeList)xPath.evaluate("/CU_DATA/CU/CON/LANGUAGES//LANGUAGE", document, XPathConstants.NODESET);
或
NodeList nl = (NodeList)xPath.evaluate("/CU_DATA/CU/CON/LANGUAGES//*", document, XPathConstants.NODESET);
/
用于分隔节点,其中//
递归返回所有节点