2015-06-05 14 views
0

當使用XmlParser時,它會自動去除未使用的名稱空間定義。它似乎沒有檢測到在某個值中使用的名稱空間。groovy xml名稱空間定義用於屬性值XmlParse/serialize後丟失

例如代碼:對於屬性 「類型」 的值是 「的xs:串」,規定的命名空間定義,但XmlParser的剝離出來

import groovy.xml.XmlUtil 

def xml = '''<?xml version="1.0" encoding="UTF-8"?> 
<value xmlns:xs="http://xs" type="xs:string">http://localhost:8001/MyService</value> 
''' 
def doc = new XmlParser().parseText(xml) 

println(xml) 
println(XmlUtil.serialize(doc)) 

輸出:

****ORIGINAL**** 
<?xml version="1.0" encoding="UTF-8"?> 
<value xmlns:xs="http://xs" type="xs:string">http://localhost:8001/MyService</value> 

****XML PARSED/SERIALIZED***** 
<?xml version="1.0" encoding="UTF-8"?> 
<value type="xs:string">http://localhost:8001/MyService</value> 

是否有任何告訴XmlParser保持這個名稱空間定義的方法?

回答

0
def parser = new XmlParser() 
    parser.setFeature("http://xml.org/sax/features/namespaces", false) 
    parser.setFeature("http://xml.org/sax/features/namespace-prefixes", true) 
    doc = parser.parseText(xml) 
    println(XmlUtil.serialize(doc)) 
相關問題