Как отобразить содержимое в формате XML после разбора XML в Grails? - PullRequest
0 голосов
/ 23 мая 2011

У меня есть 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 голосов
/ 23 мая 2011

В документации есть некоторые примеры по отображению ответа в виде XML (http://grails.org/doc/latest/ref/Controllers/render.html). Я еще никогда не использовал его, но, возможно, что-то вроде:

import grails.converters.*

...

render doc as XML
0 голосов
/ 23 мая 2011

jjczopek правильно, что render doc as XML - это хороший подход.Если вам нужен больший контроль над вещами, или если ваш ответ - это действительно HTML, содержащий раздел XML, вы можете использовать такой код:

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 с

<code><pre>
${xmlstring.encodeAsHTML()}
0 голосов
/ 23 мая 2011

Если вы читаете этот файл как обычный текстовый файл, он должен работать. Хотя я не уверен в форматировании XML.

...