Skip to content

Releases: zhegexiaohuozi/JsoupXpath

v2.5.1

30 Nov 11:46
Compare
Choose a tag to compare
  • 修复了 PrecedingSiblingOneSelector 这个函数无效的问题 , 感谢@s24963386贡献!
  • 修复 #66 ,函数参数表达式使用的上下文不够全面的问题
  • 优化text() 块节点属性信息,以便更好的支持倒序索引
  • 增加double/long sum(node-set) 函数,计算给定的节点集合中数字节点值的和,计算参数范围内包含非数字内容则计算无效。
  • 优化num()结果表现,尽量符合用户使用直觉。整数返回整数,浮点数返回浮点数,不再统一只返回浮点数。

2.5.0

21 Jul 10:55
Compare
Choose a tag to compare

升级部分依赖版本至最新版,功能没有变动和调整,各位同学可以根据各自的实际使用的情况选择是否升级至该版本。

  • Jsoup版本由 1.10.3升级至1.14.1
  • commons-lang3 版本 3.3.2 升级至 3.12.0
  • slf4j-api 版本 1.7.25 升级至 1.7.32

2.4.3

02 Nov 09:54
Compare
Choose a tag to compare

修复text() 在文本比对时的问题。

fix #53

v2.4.2

27 Sep 02:58
Compare
Choose a tag to compare

test:
https://github.com/zhegexiaohuozi/JsoupXpath/blob/94fc9c79095c1909c552e1e7e6ef545d3271bdf4/src/test/java/org/seimicrawler/xpath/JXDocumentTest.java#L246

    @Test
    public void fixTextElNoParentTest(){
        String test="<div class='a'> a <div>need</div> <div class='e'> not need</div> c </div>";
        JXDocument j = JXDocument.create(test);
        List<JXNode> l = j.selN("//div[@class='a']//text()[not(ancestor::div[@class='e'])]");
        Set<String> finalRes = new HashSet<>();
        for (JXNode i : l){
            logger.info("{}",i.toString());
            finalRes.add(i.asString());
        }
        Assert.assertFalse(finalRes.contains("not need"));
        Assert.assertTrue(finalRes.contains("need"));
        Assert.assertEquals(4, finalRes.size());
    }

v2.4.1

25 Sep 06:59
Compare
Choose a tag to compare
  • fix #52
  • 优化 //text() 递归场景渲染顺序

之前版本的关于text()函数的实现有些简化了,在某些特殊场景无法做到按索引精准提取某一文本块。本次更新重构了text()函数,支持语法范围内全部标准行为。

    @Test
    public void FixTextBehaviorTest(){
        String html = "<p><span class=\"text-muted\">分类:</span>动漫<span class=\"split-line\"></span><span class=\"text-muted hidden-xs\">地区:</span>日本<span class=\"split-line\"></span><span class=\"text-muted hidden-xs\">年份:</span>2010</p>";
        JXDocument jxDocument = JXDocument.create(html);
        List<JXNode> jxNodes = jxDocument.selN("//text()[3]");
        String actual = StringUtils.join(jxNodes,"");
        logger.info("actual = {}",actual);
        Assert.assertEquals("2010", actual);
    }

对老代码的影响

text()不再简单的返回节点下的所有文本,而是按照标准语义识别出多个文本块,返回文本块列表,如

<p> one <span> two</span> three </p>
  • //text() 返回 ["one", "two", "three" ]
  • //text()[2] 返回 ["three"]
  • 每个文本块会自动去掉开头和结尾的空白

allText() 表现会和以前一样,可酌情使用

v2.3.2

07 Mar 03:36
Compare
Choose a tag to compare

v2.3.1

27 Feb 06:32
Compare
Choose a tag to compare

v2.3.0

14 Feb 08:42
Compare
Choose a tag to compare
  • 修复轴选择器筛选结果没有保证顺序的bug

  • 增加函数substring-before-lastsubstring-after-last ,感谢 @zzldnl 的贡献

v2.2.1

21 Jan 18:38
Compare
Choose a tag to compare
  • 文档更新
  • 小优化 #27

v2.2

08 Sep 03:36
Compare
Choose a tag to compare
  • 剔除对类扫描器fast-classpath-scanner的依赖,以增强稳定性
  • 修复 | 语义问题