XHTML ドキュメントから抽出するテキストを正規化するには、XPath 関数 normalized-space() を使用する必要があります: 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
ましたが、シーケンスの最初の要素しか返されません。
文字列の配列のようなものを取得するにはどうすればよいですか?
前もって感謝します。