XmlParse/serialize后属性值丢失中使用的groovy xml命名空间定义
使用XmlParser时,它会自动删除未使用的命名空间定义。它似乎没有检测到值中使用的名称空间 示例代码:属性“type”的值是“xs:string”,它需要名称空间定义,但XmlParser将其去掉XmlParse/serialize后属性值丢失中使用的groovy xml命名空间定义,groovy,xml-parsing,namespaces,Groovy,Xml Parsing,Namespaces,使用XmlParser时,它会自动删除未使用的命名空间定义。它似乎没有检测到值中使用的名称空间 示例代码:属性“type”的值是“xs:string”,它需要名称空间定义,但XmlParser将其去掉 import groovy.xml.XmlUtil def xml = '''<?xml version="1.0" encoding="UTF-8"?> <value xmlns:xs="http://xs" type="xs:string">http://localh
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))
import groovy.xml.XmlUtil
def xml=''
http://localhost:8001/MyService
'''
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>
****原件****
http://localhost:8001/MyService
****XML解析/序列化*****
http://localhost:8001/MyService
有没有办法告诉XmlParser保留这个名称空间定义
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))