2017-05-11 2 views
0
を返します

私はHtmlPageオブジェクトに保存したWebページを持っています。私はXPathを適用し、その結果はリストに格納されています。HtmlElementは子ノードを表示しませんが、HtmlElement.asXml()メソッドは

List<?> items = null; 
items = page.getByXPath("//div[contains(@class,'search-result-cards')]/div[contains(@class,'listContainer')]"); 

今、私が観察し何を、私はのHtmlElementを使用して、これらの項目を反復処理するとき、私はクラスlistContainerではなく、その子ノードが含まれているdivタグのちょうど最初の行を取得することです。しかし、he.asXml()メソッドを使うと、サブノードについても完全な情報が得られます。ここ

for(HtmlElement he : (List<HtmlElement>) items) 
{ 
    br.write("Printing just the element ::: "+he); 
    br.write(he.asXml()); 
} 

brは、出力をファイルに書き込むために使用されているBufferedWriterのオブジェクトです。 問題は、HtmlElementオブジェクト内のhe.asXml()メソッドを呼び出した後に来るこのすべての情報が必要なことです。出来ますか?私は動作しなかったHtmlElementオブジェクトに直接文字列を型キャストしようとしました。誰でも助けてくれますか?

Output 
Printing just the element ::: HtmlDivision[<div class="listContainer" data-ptitle="3139847000" data-reactid="402">] 

he.asXml() Output 
<div class="listContainer" data-ptitle="3139847000" data-reactid="402"> 
<div class="imageContainer" data-reactid="403"> 
<div class="prodInfoContainer" data-reactid="406"> 
. 
. 
. 

出力が非常に大きいので、これらのノードは継続していることを表します。 私が言及していないかもしれない他の情報が必要な場合は教えてください。

+0

をのtoString()メソッドは、要素の内容を返さないようです。それはなぜ問題なのですか? –

+0

これは問題ではありません。私のコードの次の部分では、このhtml要素オブジェクトを構文解析に使用しています。入力はasXmlメソッドの出力でなければなりませんが、HtmlElement型のみです。 –

+0

「HtmlElementタイプのみ」とはどういう意味ですか? –

答えて

0

.toString()は、子ではなく現在のDomElementのみを表示します。

あなたが子供を取得する必要があり、いずれかのXPath、のようなもの使用することにより:

List<HtmlElement> items = page.getByXPath("//div[contains(@class,'listContainer')]"); 
for (HtmlElement item : items) { 
    List<HtmlElement> children = item.getByXPath(".//div"); 
    for (HtmlElement child : children) { 
     System.out.println(child); 
    } 
} 

それとも

for (HtmlElement child : item.getHtmlElementDescendants()) { 
    System.out.println(child); 
} 
関連する問題