如何保持groovy / XMLSlurper从节点中删除html标签?

时间:2012-03-14 20:58:19

标签: grails groovy html-parsing xmlslurper

我正在从POST响应中读取HTML文件并使用XMLSlurper解析它。页面上的textarea节点有一些HTML代码(非urlencoded - 不是我的选择),当我读取该值时,Groovy会删除所有标签。

示例:

<html>
    <body>
        <textarea><html><body>This has html code for some reason</body></html></textarea>
    </body>
</html>

当我解析上面的内容然后找到(...)“textarea”节点时,它会返回给我:

This has html code for some reason

并没有任何标签。如何保留标签?

1 个答案:

答案 0 :(得分:2)

我认为你得到了正确的数据,但是打错了...你能尝试使用StreamingMarkupBuilder将节点转换回一段xml吗?

def xml = '''<html>
            |  <body>
            |    <textarea><html><body>This has html code for some reason</body></html></textarea>
            |  </body>
            |</html>'''

def ta = new XmlSlurper().parseText( xml ).body.textarea

String content = new groovy.xml.StreamingMarkupBuilder().bind {
  mkp.yield ta.children()
}

assert content == '<html><body>This has html code for some reason</body></html>'