Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android Jsoup-从元素中提取html_Android_Html Parsing_Jsoup - Fatal编程技术网

Android Jsoup-从元素中提取html

Android Jsoup-从元素中提取html,android,html-parsing,jsoup,Android,Html Parsing,Jsoup,我想使用jsoupHTML解析器库从div元素中提取HTML代码 HTML代码: <div class="entry-content"> <div class="entry-body"> <p><strong>Text 1</strong></p> <p><strong> <a class="asset-img-link" href="http://example.

我想使用jsoupHTML解析器库从div元素中提取HTML代码

HTML代码:

<div class="entry-content">
   <div class="entry-body">
      <p><strong>Text 1</strong></p>
      <p><strong> <a class="asset-img-link" href="http://example.com" style="display: inline;"><img alt="IMG_7519" class="asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive" src="http://example.com" style="width: 500px;" title="IMG_7519" /></a><br /></strong></p>
      <p><em>Text 2</em> </p>
   </div>
</div>
我希望结果
el.html()
是div选项卡条目正文中的整个html:

<p><strong>Text 1</strong></p>
  <p><strong> <a class="asset-img-link" href="http://example.com" style="display: inline;"><img alt="IMG_7519" class="asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive" src="http://example.com" style="width: 500px;" title="IMG_7519" /></a><br /></strong></p>
  <p><em>Text 2</em> </p>
文本1


文本2

但是我只得到了第一个标签:

<p><strong>Text 1</strong></p>
文本1

试试这个:

Elements el = doc.select("div.entry-body");
与此相反:

Element el = doc.select("div.entry-body").first();
然后:

for(Element e : el){
    e.html();
}
编辑

如果你这样做,也许你会得到你的结果: 我已经试过了,它给出了一个正确的结果。
Elements el=doc.select(“a.asset-img-link”)

尝试以下操作:

Elements el = doc.select("div.entry-body");
与此相反:

Element el = doc.select("div.entry-body").first();
然后:

for(Element e : el){
    e.html();
}
编辑

如果你这样做,也许你会得到你的结果: 我已经试过了,它给出了一个正确的结果。
Elements el=doc.select(“a.asset-img-link”)

在您的情况下,您将使用

  doc.select("div[name=entry-body]") to select that specific <div>
doc.select(“div[name=entry body]”)来选择特定的

根据这个

在你的情况下,你应该使用

  doc.select("div[name=entry-body]") to select that specific <div>
doc.select(“div[name=entry body]”)来选择特定的

根据OP评论中提到的这一点,我不明白。这是我对问题的再现,它正是你想要的:

String html = ""
    +"<div class=\"entry-content\">"
    +"   <div class=\"entry-body\">"
    +"      <p><strong>Text 1</strong></p>"
    +"      <p><strong> <a class=\"asset-img-link\" href=\"http://example.com\" style=\"display: inline;\"><img alt=\"IMG_7519\" class=\"asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive\" src=\"http://example.com\" style=\"width: 500px;\" title=\"IMG_7519\" /></a><br /></strong></p>"
    +"      <p><em>Text 2</em> </p>"
    +"   </div>"
    +"</div>"
    ;
Document doc = Jsoup.parse(html);
Element el = doc.select("div.entry-body").first();
System.out.println(el.html());
String html=“”
+""
+"   "
+“文本1”
+“
” +“文本2

” +" " +"" ; Document doc=Jsoup.parse(html); 元素el=文件选择(“div.entry-body”).first(); System.out.println(el.html());
这将产生以下输出:

<p><strong>Text 1</strong></p> 
<p><strong> <a class="asset-img-link" href="http://example.com" style="display: inline;"><img alt="IMG_7519" class="asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive" src="http://example.com" style="width: 500px;" title="IMG_7519"></a><br></strong></p> 
<p><em>Text 2</em> </p>
文本1

文本2


正如OP评论中提到的,我不明白。这是我对问题的再现,它正是你想要的:

String html = ""
    +"<div class=\"entry-content\">"
    +"   <div class=\"entry-body\">"
    +"      <p><strong>Text 1</strong></p>"
    +"      <p><strong> <a class=\"asset-img-link\" href=\"http://example.com\" style=\"display: inline;\"><img alt=\"IMG_7519\" class=\"asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive\" src=\"http://example.com\" style=\"width: 500px;\" title=\"IMG_7519\" /></a><br /></strong></p>"
    +"      <p><em>Text 2</em> </p>"
    +"   </div>"
    +"</div>"
    ;
Document doc = Jsoup.parse(html);
Element el = doc.select("div.entry-body").first();
System.out.println(el.html());
String html=“”
+""
+"   "
+“文本1”
+“
” +“文本2

” +" " +"" ; Document doc=Jsoup.parse(html); 元素el=文件选择(“div.entry-body”).first(); System.out.println(el.html());
这将产生以下输出:

<p><strong>Text 1</strong></p> 
<p><strong> <a class="asset-img-link" href="http://example.com" style="display: inline;"><img alt="IMG_7519" class="asset  asset-image at-xid-6a00d8341c648253ef01b7c8114e72970b img-responsive" src="http://example.com" style="width: 500px;" title="IMG_7519"></a><br></strong></p> 
<p><em>Text 2</em> </p>
文本1

文本2


我无法重现该问题。如果我完全按照你说的做,我会得到所有的内部HTML。您使用的是哪个版本的JSoup?我的检查是用1.8.3版完成的,我也在用1.8.3版-最后一个版本,但它不工作。。。你得到了整个
div
内容的结果吗?我无法重现这个问题。如果我完全按照你说的做,我会得到所有的内部HTML。您使用的是哪个版本的JSoup?我的检查是用1.8.3版完成的,我也在用1.8.3版-最后一个版本,但它不工作。。。你得到了整个
div
内容的结果吗?它不起作用
el.size()
为1,仅打印文本1

不起作用
el.size()
为1,只打印
文本1

不起作用-返回0个元素。根据您陈述的文档,
el.class:应该使用带有类的元素,例如div.mashead
,但这并不能获得整个
div
内容。编辑如果您这样做,可能会得到结果:我尝试过这样做,并且给出了正确的结果<代码>元素el=doc.select(“a.asset-img-link”)它不工作-它返回0个元素。根据您陈述的文档,
el.class:应该使用带有类的元素,例如div.mashead
,但这并不能获得整个
div
内容。编辑如果您这样做,可能会得到结果:我尝试过这样做,并且给出了正确的结果<代码>元素el=doc.select(“a.asset-img-link”)