gpt4 book ai didi

xml - Groovys XmlSlurper 中的命名空间处理

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:02 25 4
gpt4 key购买 nike

情况:

def str = """
<foo xmlns:weird="http://localhost/">
<bar>sudo </bar>
<weird:bar>make me a sandwich!</weird:bar>
</foo>
"""
def xml = new XmlSlurper().parseText(str)
println xml.bar

这段代码的输出是

# sudo make me a sandwich!

解析器似乎合并了 <bar> 的内容和 <weird:bar> .

是否需要这种行为?如果是,我如何避免这种情况并仅选择 <bar><weird:bar>

最佳答案

默认情况下,XMLSlurper 不支持命名空间。这可以通过使用 declareNamespace 声明命名空间来打开 Method .

def str = """ 
<foo xmlns:weird="http://localhost/">
<bar>sudo </bar>
<weird:bar>make me a sandwich!</weird:bar>
</foo>
"""
def xml = new XmlSlurper().parseText(str).declareNamespace('weird':'http://localhost/')
println xml.bar // without namespace awareness, will print "sudo make me a sandwich!"
println xml.':bar' // will only print "sudo"
println xml.'weird:bar' // will only print "make me a sandwich!"

输出是:

sudo make me a sandwich!
sudo
make me a sandwich!

第一个 println 仍然不能识别命名空间。第二个 println 将只打印没有命名空间的标签。如果您使用第三个 println 中显示的前缀限定元素,您只会获得命名空间标记。

关于xml - Groovys XmlSlurper 中的命名空间处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8669766/

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