我需要使用 XPath 函数 normalized-space() 来规范化我想从 XHTML 文档中提取的文本:http: //test.anahnarciso.com/clean_bigbook_0.html
我正在使用以下表达式:
//*[@slot="address"]/normalize-space(.)
它在我用来测试 XPath 表达式的工具 Qizx Studio 中完美运行。
let $doc := doc('http://test.anahnarciso.com/clean_bigbook_0.html')
return $doc//*[@slot="address"]/normalize-space(.)
这个简单的查询返回一个xs:string
.
144 Hempstead Tpke
403 West St
880 Old Country Rd
8412 164th St
8412 164th St
1 Irving Pl
1622 McDonald Ave
255 Conklin Ave
22011 Hempstead Ave
7909 Queens Blvd
11820 Queens Blvd
1027 Atlantic Ave
1068 Utica Ave
1002 Clintonville St
1002 Clintonville St
1156 Hempstead Tpke
Route 49
10007 Rockaway Blvd
12694 Willets Point Blvd
343 James St
现在,我想在我的 Java 代码中使用前面的表达式。
String exp = "//*[@slot=\"address"\"]/normalize-space(.)";
XPath xpath = XPathFactory.newInstance().newXPath();
XPathExpression expr = xpath.compile(exp);
Object result = expr.evaluate(doc, XPathConstants.NODESET);
但最后一行抛出异常:
Cannot convert XPath value to Java object: required class is org.w3c.dom.NodeList; supplied value has type xs:string
显然,我应该改变XPathConstants.NODESET
一些东西;我试过XPathConstants.STRING
了,但它只返回序列的第一个元素。
如何获得类似字符串数组的东西?
提前致谢。