Boo*_*eoo 5 xml groovy parsing namespaces
我发现了XmlParser().parseText(...)的这个supergroovy函数.
它没有命名空间对我工作正常...现在我有以下XML(SoapRequest):
<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://xxx" xmlns:xsd="http://xxy"
xmlns:xsi="http://xxz">
<soap:Body>
<MG_Input xmlns="http://yxx">
<Accnr>001</Accnr>
[...]
Run Code Online (Sandbox Code Playgroud)
我的目标是通过XmlParser获得Accnr.我认为它可以这样工作:
input = new File('c:/temp/03102890.xml-out')
def soapns = new groovy.xml.Namespace("http://xxx",'soap')
def xsdns = new groovy.xml.Namespace("http://xxy")
def xsins = new groovy.xml.Namespace("http://xxz")
def ordns = new groovy.xml.Namespace("http://yxx")
xml = new XmlParser().parseText(input.getText())
println xml[soapns.Envelope][soapns.Body][ordns.MG_Input][Accnr][0].text()
Run Code Online (Sandbox Code Playgroud)
但这并没有真正起作用......
有谁知道如何处理这个'简单'?我只是不能使用谷歌的例子......
你的表达式不正确 - xmlvar已经是xml文档的根元素(在本例中soap:Envelope) - 所以你只需要从那里遍历.所以,你要找的表达方式是:
println xml[soapns.Body][ordns.MG_Input].Accnr[0].text()
Run Code Online (Sandbox Code Playgroud)