PLSQL从XML读取值(再次)?

问题描述:

我前段时间发布了一个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> 

我真的不舒服,因为我无法理解它!

'//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