我有一个带有嵌入式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>
有没有办法阻止&amp; lt /&amp; gt等序列被findAll等方法破坏?
答案 0 :(得分:2)
看看this question - 它的类似问题。建议的解决方案也适用于您的情况:
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>'