如何在grails中进行xml解析后以xml格式显示内容?

时间:2011-05-23 11:43:24

标签: grails xml-formatting

我有一个看起来像这样的

的sample.xml

<?xml version="1.0" ?> <Employee> <Name>ABC</Name> <EmpId>100011</EmpId> <Occupation>Programmer</Occupation> <Company>XYZ</Company> </Employee> `  并且解析它的代码是

def display = {
        def parser = new XmlParser()
        def doc = parser.parse("grails-app/conf/sample.xml")
        def map =  [data: doc]
        render (view:'/myxml',model:map) }

当我运行这个应用程序时,我得到输出,如myxml.gsp

所示

Employee[attributes={}; value=[Name[attributes={}; value=[ABC]], EmpId[attributes={}; value=[100011]], Occupation[attributes={}; value=[Programmer]],Company[attributes={}; value=[XYZ]]]]

我有什么方法可以用如图所示的格式获得它

<Employee>
<Name>ABC</Name>
<EmpId><100011</EmpId>
<Occupation>Programmer</Occupation>
<Company>XYZ</Company>
</Employee>

3 个答案:

答案 0 :(得分:0)

如果您将此文件作为普通文本文件阅读,它应该可以正常工作。我不确定XML格式。

答案 1 :(得分:0)

文档在将响应呈现为XML方面有一些经验(http://grails.org/doc/latest/ref/Controllers/render.html)。我从来没有使用它,但也许是这样的:

import grails.converters.*

...

render doc as XML

答案 2 :(得分:0)

jjczopek是正确的,render doc as XML是一个很好的方法。如果您想要更多地控制事物,或者您的响应实际上是包含XML部分的HTML,那么您可以使用如下代码:

def display = {
    def doc = new XmlParser().parse("grails-app/conf/sample.xml")
    def writer = new StringWriter()
    def nodePrinter = new XmlNodePrinter(new PrintWriter(writer))
    nodePrinter.preserveWhitespace = true
    nodePrinter.print doc

    render view: '/myxml', model: [xmlstring: writer.toString()]
}

然后在myxml.gsp中,您可以使用

显示XML
<pre>
${xmlstring.encodeAsHTML()}
</pre>