好吧,您的文档有点令人困惑,因为似乎从未声明过 xsi 和 ns2 命名空间,但我假设它们是在完整文档中的某个地方声明的。
来自Groovy 文档
def wsdl = '''
<definitions name="AgencyManagementService"
xmlns:ns1="http://www.example.org/NS1"
xmlns:ns2="http://www.example.org/NS2">
<ns1:message name="SomeRequest">
<ns1:part name="parameters" element="SomeReq" />
</ns1:message>
<ns2:message name="SomeRequest">
<ns2:part name="parameters" element="SomeReq" />
</ns2:message>
</definitions>
'''
def xml = new XmlSlurper().parseText(wsdl).declareNamespace(ns1: 'http://www.example.org/NS1', ns2: 'http://www.example.org/NS2')
println xml.'ns1:message'.'ns1:part'.size()
println xml.'ns2:message'.'ns2:part'.size()
对于您的示例(请注意,您必须填写命名空间的 URL):
def ggg = '''
<Element xmlns:xsi="http://www.example.org/xsi"
xmlns:ns2="http://www.example.org/NS2">
<Subelement xsi:type="ns2:xyType">
<SubSub name="bob" />
</Subelement>
</Element>
'''
def xml = new XmlSlurper().parseText(ggg).declareNamespace(xsi: 'http://www.example.org/xsi', ns2: 'http://www.example.org/NS2')
def elem = xml.'Subelement'
if ( elem.'@xsi:type'.text() == 'ns2:xyType' ){
// do it
}