2013-10-29 28 views
7

olarak değiştirin. Bazı araştırma yaptım ve standart Jsoup bu değişikliği yapmak gibi görünüyor. Bunu yapılandırmanın bir yolu var mı, yoksa başka bir Ayrıştırıcı var mı, Jsoup'un bir belgesine dönüştürülebilir mi, yoksa bunu düzeltmenin bir yolu mu?Ayrıştırıcı JSoup küçük harf harf

cevap

7

Maalesef hayır, Tag sınıfın yapıcı küçük harf adını değiştirir:

private Tag(String tagName) { 
    this.tagName = tagName.toLowerCase(); 
} 

Ama bu behavour değiştirmek için iki yol vardır: Bir temiz çözüm istiyorsanız

  1. JSoup Git'u klonlayabilir/indirebilir ve bu satırı değiştirebilirsiniz.
  2. kirli çözümünü isterseniz yansımayı kullanabilirsiniz. 2. için

Örnek: sürümünde 1.9.3 tanıtılan ParseSettings sınıfı vardır

Field tagName = Tag.class.getDeclaredField("tagName"); // Get the field which contains the tagname 
tagName.setAccessible(true); // Set accessible to allow changes 

for(Element element : doc.select("*")) // Iterate over all tags 
{ 
    Tag tag = element.tag(); // Get the tag of the element 
    String value = tagName.get(tag).toString(); // Get the value (= name) of the tag 

    if(!value.startsWith("#")) // You can ignore all tags starting with a '#' 
    { 
     tagName.set(tag, value.toUpperCase()); // Set the tagname to the uppercase 
    } 
} 

tagName.setAccessible(false); // Revert to false 
+0

Bahsettiğiniz kodun çoğunu değiştirmek zorundaydım, ancak ilk alternatifi kullanarak çok iyi çalıştım. Bahşiş için teşekkürler. –

+0

# 1 gerçekten böyle bir çabadır? Sadece tek satırın değişeceğini düşündüm. – ollo

+0

Sadece ayrıştırıcı kullanmıyorum, diğer işlevleri kullanıyorum. İsterseniz, ben de libray'ı bir yerde yayınlayabilirim .... –

1

olduğunu. Etiketler ve öznitelikler için durumu korumak için seçeneklerle birlikte gelir.

0

Bu kod parçasına sahip olmayan 1.11.1-SNAPSHOT sürümünü kullanıyorum.

private Tag(String tagName) { 
    this.tagName = tagName.toLowerCase(); 
} 

Yani yukarıda önerildiği gibi ParseSettings kontrol edilip gelen bu kod parçası değiştirdi:

static { 
    htmlDefault = new ParseSettings(false, false); 
    preserveCase = new ParseSettings(true, true); 
} 

için:

static { 
    htmlDefault = new ParseSettings(true, true); 
    preserveCase = new ParseSettings(true, true); 
} 

ve JAR kurarken test durumları atlanır.

İlgili konular