v2.4.1
- 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()
表现会和以前一样,可酌情使用