groovy findAll扩展<
我有一个嵌入HTML标签的XML文档,它包含“&lt”和“&gt”(它由XMLSlurper.parseText()
干净地解析)。 当我使用Groovy的depthFirst.findAll()
,返回的列表显示<
; >
替换为<
和>
。 这使得后续难以搜索原始XML内容,因为返回的列表项不再与原始XML中的字符匹配。
来自XML的碎片:
<label>Read about it <a href="http://whatever">here</a></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 <a href="http://whatever">here</a></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 <a href="http://whatever">here</a>'
链接地址: http://www.djcxy.com/p/87625.html