簡體   English   中英

教程XML Parser Groovy命名空間處理

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM