Groovy:Xml:如何在gsp页面的textarea中显示Xml响应

时间:2014-05-05 08:46:57

标签: xml grails groovy gsp xmldocument

将Xml响应存储在字符串中,我想将其显示在gsp页面的textarea中

String responseXml = ""<Cars>
                           <Car>benz</Car>
                           <Car>audi</Car>
                           <Car>bmw</Car>
                       </Cars>""

在gsp页面中

<g:textArea name="xml" value="${responseXml}"  rows="20" cols="100"/>

将textarea中的响应作为单行xml标记获取,如此

<Cars><Car>benz</Car><Car>audi</Car><Car>bmw</Car></Cars>

但我想要的是在textarea中显示xml标签,就像这样

<Cars>
   <Car>benz</Car>
   <Car>audi</Car>
   <Car>bmw</Car>
</Cars>

1 个答案:

答案 0 :(得分:1)

我为此创建了一个taglib,因为我在muitiple的地方遇到了这个问题:

 /**
 * Preserves line breaks and spaces of the supplied value when displaying as html.
 * @param value - The value to preserve linebreaks of.
 */
def preserveFormat ={ attrs, body ->
    def value = attrs.value
    out << value.encodeAsHTML().replace('\n', '<br/>\n').replace(' ','&nbsp;').replace('\t','&nbsp;&nbsp;&nbsp;&nbsp;')
 }

/**
 * Displays xml content in a pretty formatted way and preserves formatting in html view.
 */
def displayXml={attrs, body ->
    def xml = attrs.xml
    assert xml
    def prettyXml = groovy.xml.XmlUtil.serialize(xml)
    out << preserveFormat(value:prettyXml)
}

我根据下面评论中的建议,使用额外的taglib更新了我的回复,该taglib也以非常方式格式化xml。