0

Javaでhttp://www.amazon.com/gp/bestsellers/electronicsorg.w3c.dom.NodeListからa を抽出しようとしています。Google Chrome JavaScript コンソールで結果を表示するために使用した XPath ステートメントを次に示します。

$x("//div[@class='zg_itemRightDiv_normal']")

上記のステートメントは問題なく機能しましたが、Javajavax.xml.xpathorg.w3c.domライブラリを使用すると結果が得られません。

XPathExpression expr = xPath.compile("//div[@class='zg_itemRightDiv_normal']");
NodeList productNodes = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

// In the above productNodes definition, doc is a org.w3c.dom.DocumentFragment

System.out.println(productNodes.getLength()); // prints out '0'

私は何が欠けていますか?

4

2 に答える 2

1

入力が実際には HTML (XHTML ではない) の場合に、入力を XML として処理しようとしていることが原因である可能性があります。

最初に HTML を XHTML に変換する必要があります。以前はTagSoupを使用して成功していましたが、これを実行できる他のライブラリ (JTidy、NekoHTML) もあります。

TagSoup は SAX パーサーを提供します。これを DOM に変換し、XPath で処理できます。

于 2012-12-14T01:51:50.733 に答える
0

この問題の解決策は、次の 2 つでした。

  1. DocumentFragment私が読んでいた には、抽出しようとしていた情報が含まれていませんでした。フルを使用してDocument問題を解決しました
  2. 何らかの理由で、XPath ステートメントで HTML タグを大文字にすると、目的の情報 (つまり、xPath.compile("//DIV[@class='zg_itemRightDiv_normal']")) を取得できました。
于 2012-12-18T22:24:50.150 に答える