我有一个看起来像这样的
的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>
答案 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>