Xpath 2.0 如何在Java7中通过XPath使用JDOM2获取所有元素名?
我有一个如下所示的XML文件Xpath 2.0 如何在Java7中通过XPath使用JDOM2获取所有元素名?,xpath-2.0,jdom-2,Xpath 2.0,Jdom 2,我有一个如下所示的XML文件 <?xml version="1.0" encoding="UTF-8"?> <Site> <Name>MySite</Name> <Groups> <Default></Default> <GroupA></GroupA> </Groups> </Site> public List<Stri
<?xml version="1.0" encoding="UTF-8"?>
<Site>
<Name>MySite</Name>
<Groups>
<Default></Default>
<GroupA></GroupA>
</Groups>
</Site>
public List<String> getGroupNames() {
List<String> names = new ArrayList<String>();
XPathExpression<Text> xpath = XPathFactory.instance().compile(
"/Site/Groups/*/name()", Filters.text());
List<Text> elements = xpath.evaluate(document);
if (elements.size() > 0) {
for (Text text : elements) {
names.add(text.getText());
}
return names;
}
return null;
}
正确的语法是什么?我不理解这个异常。您使用的XPathFactory实例似乎只支持XPath 1
class org.jaxen.saxpath.XPathSyntaxException: /Site/Groups/*/name(): 20: Expected node-type
在能够使用XPath2之前,需要加载支持XPath2的库。例如:撒克逊人:
import net.sf.saxon.om.NamespaceConstant;
String objectModel = NamespaceConstant.OBJECT_MODEL_SAXON;
System.setProperty("javax.xml.xpath.XPathFactory:"+objectModel, "net.sf.saxon.xpath.XPathFactoryImpl");