我做了一些研究,似乎是标准的Jsoup进行了此更改。我想知道是否有一种配置方式,或者是否可以将其他解析器转换为Jsoup文档,或者通过某种方式解决此问题?

最佳答案

不幸的是,Tag类的构造函数将名称更改为小写:

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

但是有两种方法可以改变这种行为:
  • 如果您想使用干净的解决方案,则可以克隆/下载JSoup Git并更改此行。
  • 如果您想使用肮脏的解决方案,则可以使用反射。

  • #2的示例:
    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
    

    关于java - 解析器JSoup将标签更改为小写字母,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19666246/

    10-10 09:58