使用java代码在xpath中标记

时间:2015-06-03 08:14:51

标签: java xpath

有没有办法从xpath获取tokenize值。

尝试这个但没有帮助。 String Xpath =“tokenize(/ root / child,'〜')[1]”;

getAttributeValue(元件,Xpath的);

public static String getAttributeValue(Element obj, String xpath) throws Exception{


XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpatha = xPathfactory.newXPath();
XPathExpression expr = xpatha.compile(xpath);
String value =(String) expr.evaluate(obj, XPathConstants.STRING);


return value;

}

<root>
<child>hello~How~Are~You</child></root>

我需要'如何'来自xpath的第二个令牌。我怎么能得到这个

2 个答案:

答案 0 :(得分:2)

您需要使用XPath 2.0或3.0或XQuery 1.0或更高版本的实现(在2007年XPath 2.0或XQuery 1.0中引入tokenize)以及允许您返回XPath值的合适API 2.0或XQuery 1.0处理。

因此,例如使用Saxon 9.6和XPath 2.0,我建议使用http://saxonica.com/html/documentation/xpath-api/s9api-xpath.html

答案 1 :(得分:0)

鉴于你在Java中工作,在那里进行“tokenize”而不是在XPath中可能更简单:

XPathExpression expr = xpatha.compile("/root/child");
String value = ((String) expr.evaluate(obj, XPathConstants.STRING))
  .split("~")[1]; // Java counts from 0, XPath from 1