2010-06-30 21 views
5

Tôi đã gặp phải sự cố lạ với phương thức XmlUtil.serialize (GPathResult) của Groovy (1.7.3). Nó ném một lỗi 'Nội dung không được phép trong prolog' khi tôi gọi nó với một GPathResult, nhưng groovy.util.Node đang tuần tự hóa tốt. Đây là rất đơn giản Groovy Script tôi đang cố gắng:Groovy XmlUtil.serialze() đang ném một lỗi 'Nội dung không được phép trong prolog' khi cố gắng sắp xếp một GPathResult

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)) 

Đây là sản phẩm tôi nhận được:

[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> 

Tôi đang sử dụng Groovy Version: 1.7.3 JVM: 1.6.0_20 trên Mac OS X Snow Leopard

Có ai khác đang trải nghiệm điều này không?

Trả lời

4

Trông giống như một lỗi nơi Groovy là chọn sai phương pháp serialize để thực hiện trong XmlUtil

Nếu chúng ta chăm chỉ cast nó, nó dường như làm việc cho tôi (nào đó cho bạn?)

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

Tôi đã thêm nó vào JIRA tại đây: http://jira.codehaus.org/browse/GROOVY-4285 Vì vậy, hy vọng, nó sẽ được sửa trong các bản phát hành trong tương lai và bạn sẽ không cần đến số điện thoại

[sửa] JIRA bây giờ nói rằng bản sửa lỗi đã đi vào thân cây, và nói chung sẽ có sẵn trong 1.7.4+

+0

hoạt động đúc. Cảm ơn sự giúp đỡ và gửi báo cáo lỗi :) – strohs

+0

Rất vui được trợ giúp :-) Nếu đây là câu trả lời hợp lệ, bạn có thể chấp nhận nó không? Chúc mừng, và chúc may mắn! –

+0

chỉ là một bản cập nhật, điều này đã thực sự cố định trong groovy 1.7.4 – strohs

-1

Bạn chỉ có thể sử dụng Simple làm phương án thay thế cho Groovy XmlUtil.

+0

wow Đơn giản có vẻ tốt. Tôi sẽ xem xét, tôi chắc chắn nó sẽ có ích trong các dự án tương lai – strohs

Các vấn đề liên quan