Skip to content

v2.4.1

Compare
Choose a tag to compare
@zhegexiaohuozi zhegexiaohuozi released this 25 Sep 06:59
· 47 commits to master since this release
  • 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() 表现会和以前一样,可酌情使用