2011-03-22 92 views
0

我前段時間發佈了一個question about how to read values from XML,並且有一個完美的答案,它非常簡潔,但我無法理解它,並將其應用於其他一些XML!PLSQL從XML讀取值(再次)?

有人能幫我解決這個問題嗎?我需要閱讀「id」或「ChangeKey」

<soap:Envelope> 
<soap:Header> 
<t:ServerVersionInfo MajorVersion="8" MinorVersion="2" MajorBuildNumber="217" MinorBuildNumber="0"/> 
</soap:Header> 
<soap:Body> 
<m:CreateItemResponse> 
<m:ResponseMessages> 
<m:CreateItemResponseMessage ResponseClass="Success"> 
<m:ResponseCode>NoError</m:ResponseCode> 
<m:Items> 
<t:CalendarItem> 
<t:ItemId Id="erwrweff3424dfw23r2fwfwsfwsfg34fwdf2" ChangeKey="sdfwwerw4224rw"/> 
</t:CalendarItem> 
</m:Items> 
</m:CreateItemResponseMessage> 
</m:ResponseMessages> 
</m:CreateItemResponse> 
</soap:Body> 
</soap:Envelope> 

我真的不舒服,因爲我無法理解它!

回答

1

'//SOAProxyResult' 

到例如做同樣的事情如answer you referenced,但改變XPath表達式(第二個參數XMLTYPE)

'//t:ItemId/@Id' 

'//t:ItemId/@ChangeKey' 

的第三個參數需要聲明的T命名空間前綴:

'xmlns:t="foobarbaz"' 

,當然你的輸入XML將需要聲明命名空間前綴了。

+0

感謝分配,但這就是我從服務器獲取XML的方式!沒有命名空間! – 2011-03-22 15:19:36

+0

我必須添加xmlns:t =「foobarbaz」xmlns:soap =「foobarbaz」xmlns:m =「foobarbaz」所以它會工作,hmmmmmmmm – 2011-03-22 15:21:24

+0

不用擔心我解決了它,我創建了一個函數,刪除:SOAP,: t,:m,然後用命名空間運行它,完美地工作,謝謝你的幫助 – 2011-03-22 15:29:54