2014-05-05 30 views
1

儲存在一個字符串的XML響應的textarea的XML響應,我想在一個textarea在GSP頁面Groovy的:XML:如何顯示在GSP頁

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 TA在textarea的GS這樣

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

回答

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一個漂亮的方式根據下面評論的建議。

+0

這是不是類(http://groovy.codehaus.org/api/groovy/xml/XmlUtil.html)是有益的? – Opal

+0

如果xml尚未以美觀的方式格式化,那絕對會有所幫助。在這種情況下,最好先用XmlUtil格式化它。我的標籤庫通常用於所有類型的文本,我希望在html視圖中保留這些格式。 – stenix

+0

好的。我只是將'XMlUtil'漂亮的打印添加到您創建的標籤中,以確保它能夠正常工作。 – Opal