[英]JSoup not translating ampersand in links in html
在JSoup中,以下測試用例應該通過,但不是。
@Test
public void shouldPrintHrefCorrectly(){
String content= "<li><a href=\"#\">Good</a><ul><li><a href=\"article.php?boid=1865&sid=53&mid=1\">" +
"Boss</a></li><li><a href=\"article.php?boid=186&sid=53&mid=1\">" +
"heavent</a></li><li><a href=\"article.php?boid=167&sid=53&mid=1\">" +
"hellos</a></li><li><a href=\"article.php?boid=181&sid=53&mid=1\">" +
"Mr.Jackson!</a></li>";
Document document = Jsoup.parse(content, "http://www.google.co.in/");
Elements links = document.select("a[href^=article]");
Iterator<Element> iterator = links.iterator();
List<String> urls = new ArrayList<String>();
while(iterator.hasNext()){
urls.add(iterator.next().attr("href"));
}
Assert.assertTrue(urls.contains("article.php?boid=181&sid=53&mid=1"));
}
能否請您告訴我其失敗的原因?
存在三個問題:
您斷言存在一個bovikatanid
參數,但實際上稱為boid
。
HTML源使用&
而不是&
在源中。 從技術上講這是無效的。
Jsoup是解析&mid
為|
不知何故。 它應該掃描到;
。
要解決#1,您必須自己做。 要修復第二個問題,您必須將此問題報告給有問題的serveradmin管理員(這是他們的錯,但是,由於一般的瀏覽器都對此寬容,我想Google這樣做是為了節省帶寬)。 為了解決#3,我已經向Jsoup的人報告了一個問題 ,以了解他對此的看法。
更新 :看,喬納森(Jsoup家伙)已修復它。 它將在下一個版本中發布。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.