Groovy XmlUtil.serialze () выдает ошибку «Содержимое запрещено в прологе» при попытке сериализации GPathResult - PullRequest
5 голосов
/ 30 июня 2010

Я столкнулся со странной проблемой с методом Groovy (1.7.3) XmlUtil.serialize (GPathResult).Он выдает ошибку «Содержание не разрешено в прологе», когда я вызываю его с помощью GPathResult, но groovy.util.Node сериализуется просто отлично.Вот очень простой Groovy Script, который я пытаюсь:

import groovy.xml.XmlUtil
import groovy.xml.StreamingMarkupBuilder

def xmlStr = """<?xml version="1.0" encoding="UTF-8"?><stuff>ver="1.0"><properties><foo>bar</foo></properties></stuff>"""

//to pretty print GPathResult -- NOT WORKING
def gpr = new XmlSlurper().parseText( xmlStr )
println XmlUtil.serialize( gpr )

println 'trying groovy.util.Node'
//to pretty print groovy.util.Node -- WORKS
def node = new XmlParser().parseText( xmlStr )
println( XmlUtil.serialize( node ) )  

Это вывод, который я получаю:

[Fatal Error] :1:1: Content is not allowed in prolog.
ERROR:  'Content is not allowed in prolog.'
<?xml version="1.0" encoding="UTF-8"?>
trying groovy.util.Node
<?xml version="1.0" encoding="UTF-8"?>
<stuff ver="1.0">
 <properties>
  <foo>bar</foo>
 </properties>
</stuff>

Я использую Groovy Версия: 1.7.3 JVM: 1.6.0_20на Mac OS X Snow Leopard

Кто-нибудь еще испытывает это?

Ответы [ 2 ]

4 голосов
/ 01 июля 2010

Похоже, ошибка, когда Groovy выбирает неправильный метод serialize для выполнения в XmlUtil

Если мы используем его в жестком исполнении, похоже, он работает для меня (это для вас?)

println XmlUtil.serialize( (groovy.util.slurpersupport.GPathResult)gpr )

Я добавил его в JIRA здесь: http://jira.codehaus.org/browse/GROOVY-4285 Так что, надеюсь, это будет исправлено в будущих выпусках, и вам не понадобится приведение

[edit] JIRA теперь заявляет, что исправление вошло в ствол, и будет общедоступно в 1.7.4 +

0 голосов
/ 01 июля 2010

Вы можете просто использовать Простой в качестве альтернативы Groovy XmlUtil.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...