如何在Groovy中使用XMLSlurper获取html标记文本

时间:2014-11-17 16:00:47

标签: html groovy xmlslurper

我正在尝试修改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子树中获取文本?

1 个答案:

答案 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)