![](/img/trans.png)
[英]Prefixed namespace handling in XML and XSL returns error by XML parser
[英]Tutorial XML Parser Groovy Namespace Handling
我發現了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>
[...]
我的目標是通過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()
但這並沒有真正起作用......
有誰知道如何處理這個'簡單'? 我只是不能使用谷歌的例子......
你的表達式不正確 - xml
var已經是xml文檔的根元素(在本例中為soap:Envelope
) - 所以你只需要從那里遍歷。 所以,你要找的表達方式是:
println xml[soapns.Body][ordns.MG_Input].Accnr[0].text()
給別人的提示:
你可以只打印你解析的字符串。 例如,在此行xml = new XmlParser().parseText(input.getText())
之后的print xml之上,那么你將獲得top元素,它看起來類似於JSON數組,然后你可以輕松遍歷它。 不要包括您看到的最頂層元素。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.