2016-02-18 68 views
1

如何在XML soap響應中通過它的名稱找到元素(而不是像first(); last(); parent())的引用?在Groovy中查找XML元素

<xyzOrderReturn> 
    <xyzOrderResponse> 
    <UlidList> 
     <Ulid ExtnUlid="1-222-333"> 
      <OrderList TotalRecords="0"/> 
     </Ulid> 
    </UlidList> 
    </xyzOrderResponse> 
</xyzOrderReturn> 

這是我嘗試了「xyzOrderResponse」,但沒有工作...

def result = new XmlSlurper().parseText(xml) 

    def element1 = result.breadthFirst()*.findAll { it.name() == 'xyzOrderResponse' } 
    def element2 = result.depthFirst().findAll { it.name() == 'xyzOrderResponse' } 

    println element1 
    println element2 

回答

2

這兩項工作的,他們只是不打印時列表中顯示,但列表中有1型和:

def result = new XmlSlurper().parseText(xml) 

def element1 = result.breadthFirst().findAll { it.name() == 'xyzOrderResponse' } 
def element2 = result.depthFirst().findAll { it.name() == 'xyzOrderResponse' } 

println element1*.name() 
println element2*.name() 

打印

[xyzOrderResponse] 
[xyzOrderResponse] 

您也可以將depthFirst替換爲:

def element2 = result.'**'.findAll { it.name() == 'xyzOrderResponse' } 
+0

謝謝!無論如何要從輸出中修剪[]? – shaa0601

+1

當然,使用'find'而不是'findAll'來返回一個元素而不是一個列表。 –

+0

好的。我們可以通過.replaceAll刪除方括號(「[\\\ [[]]」,「」) – shaa0601