有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JSOUP将原始html转换为一些额外的编码值

我最初的html是

<!DOCTYPE html>
<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="SAF" id="global-header-light">
<head>

</head>
<body>


<div style="background-image: url(http://aka-cdn-ns.adtech.de/rm/ads/23274/HPWomenLOFT_1381687318.jpg);background-repeat: no-repeat;-webkit-background-size: 1001px 2059px; height: 2059px; width: 1001px; text-align: center; margin: 0 auto;">                      

<div style="height:2058px; padding-left:0px; padding-top:36px;">


<iframe style="height:90px; width:728px;" />



</div>
</div>

</body>
</html>

在我使用doc之后。JSOUP解析器在Iframe元素的末尾添加额外的编码值。更改的html是

<!DOCTYPE html>
<html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="SAF" id="global-header-light">
 <head> 
  <style>

</style> 
 </head> 
 <body> 
  <div style="background-image: url(aol.jpeg); background-repeat: no-repeat;-webkit-background-size:90720;height:720; width:90; text-align: center; margin: 0 auto;"> 
   <div style="height:450; width:100; padding-left:681px; padding-top:200px;"> 
    <iframe style="height:1050px; width:300px;"></iframe> ***&lt;/div&gt; &lt;/div&gt; &lt;/body&gt; &lt;/html&gt;***
   </div>
  </div>
 </body>
</html>

请帮助我如何避免这种情况

谢谢 斯瓦拉伊


共 (1) 个答案

  1. # 1 楼答案

    如果使用xmlParser解析它,它将不会添加额外的值。例如:

    String html = "<!DOCTYPE html>" +
                    "<html xmlns:og=\"http://opengraphprotocol.org/schema/\" xmlns:fb=\"http://www.facebook.com/2008/fbml\" xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\" class=\"SAF\" id=\"global-header-light\">" +
                    "<head></head>" +
                    "<body>" +
                    "<div style=\"background-image: url(http://aka-cdn-ns.adtech.de/rm/ads/23274/HPWomenLOFT_1381687318.jpg);background-repeat: no-repeat;-webkit-background-size: 1001px 2059px; height: 2059px; width: 1001px; text-align: center; margin: 0 auto;\">" +
                    "<div style=\"height:2058px; padding-left:0px; padding-top:36px;\">" +
                    "<iframe style=\"height:90px; width:728px;\" /></div></div></body></html>";
    
    Document doc = Jsoup.parse(html, "", Parser.xmlParser());
    System.out.println(doc);
    

    将输出:

    <!DOCTYPE html>
    <html xmlns:og="http://opengraphprotocol.org/schema/" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="SAF" id="global-header-light">
     <head></head>
     <body>
      <div style="background-image: url(http://aka-cdn-ns.adtech.de/rm/ads/23274/HPWomenLOFT_1381687318.jpg);background-repeat: no-repeat;-webkit-background-size: 1001px 2059px; height: 2059px; width: 1001px; text-align: center; margin: 0 auto;">
       <div style="height:2058px; padding-left:0px; padding-top:36px;">
        <iframe style="height:90px; width:728px;"></iframe>
       </div>
      </div>
     </body>
    </html>
    

    更新:

    您可以先将远程文件作为字符串获取,然后像往常一样使用我的其余代码:

    String url = request.getParameter("htmluri").trim(); 
    System.out.println("Fetching %s..."+url); 
    String xml = Jsoup.connect(url).get().toString();
    Document doc = Jsoup.parse(xml, "", Parser.xmlParser());
    

    Parser.xmlParser()是Jsoup的一部分(参见http://jsoup.org/apidocs/org/jsoup/parser/Parser.html