我正在尝试修改Groovy中的html代码。我使用XMLSlurper解析它。问题是我需要编辑包含文本和子标签的某些标签的文本。 Html代码如下所示:
<ul><li>Text to modify<span>more text</span></li></ul>
在groovy中我正在尝试这段代码:
def ulDOM = new XmlSlurper().parseText(ul);
def elements = ulDOM.li.findAll{
it.text().equals("text i am looking for");
}
问题是我在&#39;元素中排空了数组。因为it.text()从&#39;它返回文本节点与整个DOM子树文本节点一起。在这种情况下&#34;文本修改更多文本&#34;。请注意,对于我的解决方案,contains()方法是不够的。
我的问题是如何从某个标签获取精确文本,而不是从整个DOM子树中获取文本?
答案 0 :(得分:1)
.text()评估子项并追加。因此它总是包含合并的行。
你可以整理localText()吗?不完全符合您的期望,它返回一个字符串数组。
import org.testng.Assert
ul='''<ul>
<li>Text to modify<span>more text</span>
</li>
</ul> '''
def ulDOM = new XmlSlurper().parseText(ul);
def elements = ulDOM.li.findAll{
String[] text = it.localText();
text[0].equals("Text to modify");
}
Assert.assertTrue(elements.size()==1)