Tôi đang viết một vài tập lệnh chỉnh sửa tệp xml. Các tệp được đề cập sử dụng phần tử xml: lang. Groovy (XmlSlurper) dường như đang chèn một không gian tên tag0, mà tôi sẽ không bận tâm quá nhiều, ngoại trừ nó dường như phá vỡ quá trình xử lý sau với XmlUtil.XML Groovy và không gian tên "xml:"
Một ví dụ:
import groovy.xml.StreamingMarkupBuilder
import groovy.xml.XmlUtil
String source = """<?xml version='1.0' encoding='UTF-8'?>
<root>
<one xml:lang="en">First</one>
<one xml:lang="de">Second</one>
</root>
"""
def root = new XmlSlurper().parseText(source).declareNamespace(xml: "http://www.w3.org/XML/1998/namespace")
println root
String xml = new StreamingMarkupBuilder().bind{
mkp.xmlDeclaration()
out << root
}
println xml
println XmlUtil.serialize(xml)
kết quả trong
[Fatal Error] :2:44: The value of the attribute "prefix="xmlns",localpart="tag0",rawname="xmlns:tag0"" is invalid. Prefixed namespace bindings may not be empty.
Các xml: namespace là nghĩa vụ phải tồn tại theo mặc định, và tôi đã cố gắng thêm nó với .declareNamespace() nhưng nó doesn' t dường như giúp đỡ. Tôi cảm thấy như tôi đang thiếu một cái gì đó hiển nhiên, nhưng Google đã không thể cho tôi biết nó là gì.
Đáng tiếc là nó không có hiệu lực thi hành mà đối với tôi. Tôi nhận được lỗi chính xác giống như trước đây. Tôi đang trong groovy 1.8.6, còn bạn thì sao? –
Chỉ cần kiểm tra lại, và bạn nói đúng ... Xin lỗi ... Tôi sẽ gỡ bỏ điều này, và có một đi xem nếu tôi có thể làm việc ... –
@ErikAckerman Cập nhật câu trả lời của tôi để hiển thị giải pháp duy nhất tôi đã tìm thấy –