2016-03-29 14 views
0

İçinde eksik veya bozuk etiketler bulunan HTML metinlerini temizlemenin bir yolunu arıyorum. Bunlar genellikle programcı olmayanlar tarafından yazılır ve HTML ile ilgili bir takım sorunlar olabilir.jsoup - Eksik ve bozuk etiketleri içeren HTML'yi temizleme

Parser p = Parser.htmlParser(); 
String test = "Here is a <i>fake</> message.<br><b><i>- Publisher</b></i>"; 
Document d = p.parseInput(test, StringUtils.EMPTY); 
System.out.println("BEFORE: " + test); 
System.out.println("JSPARSED: " + StringUtils.remove(d.body().html(), "\n")); 
System.out.println("JSOUP: "+ Jsoup.clean(test, StringUtils.EMPTY, Whitelist.relaxed())); 

Çıktı geçerli::

BEFORE: Here is a <i>fake</> message.<br><b><i>- Publisher</b></i> 
JSPARSED: Here is a <i>fake message.<br><b><i>- Publisher</i></b></i> 
JSOUP: Here is a 
<i>fake message.<br><b><i>- Publisher</i></b></i> 

İstenen çıkış geçerli:

Here is a <i>fake</i> message.<br><b><i>- Publisher</i></b> 

mümkün jsoup kullanarak yukarıdaki durumlar için HTML temizlemek için mi burada denedim budur ?

DÜZENLEME: Biraz daha bağlam eklemek için, bu HTML bloğu web sitemizde bir ürün açıklaması olarak görüntülenir. Bu genellikle pazarlama ekibi veya yayıncı tarafından yazılır ve bazen HTML'de bazı hatalar olur. Şu anda web sitesinde görüntülenmeden önce HTML temizliği için JTidy kullanıyoruz.

Kısa bir süre önce, kaç ürünün hata tanımında hata gördüğünü görmek için bir program çalıştırdım ve yaklaşık 30.000 ürün hatayla karşılaştı. Bazılarını inceledikten sonra, hataların çoğunluğunun yanlış sırada (programın düzeltmesiyle) etiketler olduğunu, ancak etiketlerin örnekte gösterildiği gibi eksik veya hatalı olduğu durumlarda, amaçlanan şekilde sabitlenmediğini gördüm.

+0

Hatalı HTML'yi programlı olarak yazan kişinin amacını belirlemenin çok zor olduğunu göreceğinizden şüpheleniyorum. Belki de bunu yapmak isteyen nedenlerinizi açıklarsanız daha iyi bir çözüm önerebilir? – Chris

cevap

0

Hatalı 30 metrelik hatalı HTML parçacıklarının otomatik düzeltilmesiyle tutarlı sonuçlar elde etmeniz olası değildir. Şanslar, daha da berbat içerikler alırsınız. programlı, yeni düzenlenebilir/açıklamaları için kırık HTML kaydetmek için Forbid

  • :

    Kendinize bir iyilik yapın.
  • Bunları manuel olarak düzeltmek için birini işe alın (veya hataları ilk sıraya koyan pazarlama ekibine devredin).
+0

Teşekkürler. Bu muhtemelen gitmek için en iyi yoldur. – Nick

İlgili konular