groovy findAll扩展<

我有一个嵌入HTML标签的XML文档,它包含“&lt”和“&gt”(它由XMLSlurper.parseText()干净地解析)。 当我使用Groovy的depthFirst.findAll() ,返回的列表显示&lt ; &gt替换为<> 。 这使得后续难以搜索原始XML内容,因为返回的列表项不再与原始XML中的字符匹配。

来自XML的碎片:

<label>Read about it &lt;a href="http://whatever"&gt;here&lt;/a&gt;</label>

此代码:

def root = new XmlSlurper().parseText(xml)
def list = root.depthFirst().findAll{ it.name().equalsIgnoreCase('label') }

给我:

Read about it <a href="http://whatever">here</a>

有没有办法避免诸如&lt;&gt的序列被findAll之类的方法破坏?


看看这个问题 - 这是类似的问题。 建议的解决方案也适用于您的案例:

def xml = '<label>Read about it &lt;a href="http://whatever"&gt;here&lt;/a&gt;</label>'

def root = new XmlSlurper().parseText(xml)
def list = root.depthFirst().findAll{ it.name().equalsIgnoreCase('label') }

String content = new groovy.xml.StreamingMarkupBuilder().bind {
  mkp.yield list[0].text()
}

assert content == 'Read about it &lt;a href="http://whatever"&gt;here&lt;/a&gt;'
链接地址: http://www.djcxy.com/p/87625.html

上一篇: groovy findAll expands &lt

下一篇: Bootstrap: How is this clearfix supposed to work?