Groovy:在XML:如何显示GSP页面textarea的XML响应(Groovy:Xml: Ho

2019-10-20 01:56发布

已经存储在一个字符串的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>

但我想要的是显示XML标记在这样的textarea

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

Answer 1:

我创建了一个标签库为这一点,因为我在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根据下面的评论建议在一个漂亮的方式,也能格式化XML回复。



文章来源: Groovy:Xml: How to display Xml response in textarea of gsp page