gpt4 book ai didi

在 XmlParse/序列化后丢失的属性值中使用的 groovy xml 命名空间定义

转载 作者:行者123 更新时间:2023-12-04 16:56:04 25 4
gpt4 key购买 nike

使用 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://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 保留这个命名空间定义?

最佳答案

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

关于在 XmlParse/序列化后丢失的属性值中使用的 groovy xml 命名空间定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30661204/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com