1

私は持っている

<div id = top1>
   <div id topsub1>
   <ul class="student">
   <li>
    <a href="/thomas">Tom</a>
    </li>
    </div>
   <div id topsub2>
   <ul class="student">
   <li>
    <a href="/thomas1">Tom1</a>
    </li>
    </div>
 </div>

href と text を取得したいので、 Elements xx= select (div div ul li) を実行しました

foreach xx for y を実行するとき、および実行する場合

string1= y.text(); //Tom String2= y.attr("href") //これは常に空です。/thomas を取得できませんか? y.attr("a[href]")) も試しました

また、 doc.select(".studentnames > a");? これは、ID=studentnames ですべての "a" が正しいことを意味しますか???

4

2 に答える 2

2

あなたが単にした場合はどうなりますElements eles = doc.select("a[href]");か?また、メソッドを使用するときattrib(...)は、タグを渡すのではなく、属性名自体を渡すと思います。

編集:
あなたは次のように述べています:

doc.select("a[href]..多くの属性とhrefがあります..学生名の横にあるものだけが欲しい..それが、テキストを作成した直後に実行して、取得できるようにする理由です- 学生の名前と彼のウェブサイト

次に、複数の選択を順次呼び出すか、それらを連鎖させることにより、選択によって返される結果を絞り込みます。

Elements eles = doc.select("ul.student").select("a[href]");

またはおそらく(私はこれをやったことがありません):

Elements eles = doc.select("ul.student a[href]");

あるいは:

Elements eles = doc.select("div > div > ul.student > li > a[href]");
于 2012-09-16T00:20:34.793 に答える
0

これはあなたのエラーです:

1.最初の選択は get のみdiv div ul liであるため、タグのみがElements含まれます。liしたがって、次のいずれかの方法で実行できます。

各要素を取得する

for (Element x: yy) {
  Element aTag = x.child(0);
  // or it can be aTag = x.select("a[href]").first();
  // Do your stuff here !
}

選択クエリから取得します。

Elements yy = doc.select("div div ul li a[href]");

タグ内のデータを取得するために is を使用しないでください。Element.text()この場合はli. デバッグ中は、Element.html()またはを使用する必要がありますElements.html()

2. あなたの懸念について:

また、 : doc.select(".studentnames > a")? これは、ID=studentnames ですべての "a" が正しいことを意味しますか???

.はクラスですが、#id です。なお、直系の子>です。

したがって、クエリは次のことを意味します。 「クラスが「studentnames」に等しいタグの直接の子であるすべてのタグを返します」

詳細については、Jsoup のSelectorドキュメントを確認してください。

于 2012-09-17T10:41:51.993 に答える