如何通过前缀(groovy)获取xml文件的命名空间

时间:2014-05-22 13:14:08

标签: xml groovy namespaces

我发现了大量示例如何将命名空间添加到xml文件,但没有找到如何从现有文件中获取命名空间的示例。我正在使用XmlParser。 要清楚,如果我有一个文件

<?xml version="1.0" encoding="UTF-8"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
...
</wsdl>

我有前缀soap然后我希望得到http://schemas.xmlsoap.org/wsdl/soap/作为结果

当我使用时:

def wsdlRoot = new XmlParser().parseText(text)
println wsdlRoot.attribute('xmlns:soap')
println wsdlRoot.@'xmlns:soap'

我得到了

null 
null

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

两种方式:

  • 使用XmlSlurper而不是不知道名称空间。

例如

def wsdlRoot = new XmlSlurper().parseText( text )
assert wsdlRoot.lookupNamespace( 'soap' ) == 
       'http://schemas.xmlsoap.org/wsdl/soap/' 
  • 使用XmlParser并使命名空间不知道

例如

def wsdlRoot = new XmlParser(false, false).parseText(xml)
assert wsdlRoot.@'xmlns:soap' == 'http://schemas.xmlsoap.org/wsdl/soap/' 

我认为第一种方法对你来说更合适。