İç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.
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