PLSQL 从 XML 读取值(再次)?
Posted
技术标签:
【中文标题】PLSQL 从 XML 读取值(再次)?【英文标题】:PLSQL read value from XML (Again)? 【发布时间】:2011-03-22 15:02:08 【问题描述】:我不久前发布了question about how to read values from XML,并且有一个完美的答案,它是如此简洁和简单,但我无法理解它并将其应用于其他一些 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】:执行与answer you referenced 相同的操作,但将 XPath 表达式(XMLTYPE 的第二个参数)从
'//SOAProxyResult'
例如
'//t:ItemId/@Id'
或
'//t:ItemId/@ChangeKey'
第三个参数需要声明 t 命名空间前缀:
'xmlns:t="foobarbaz"'
当然,您的输入 XML 也需要声明该命名空间前缀。
【讨论】:
感谢分配,但这就是我从服务器获取 XML 的方式!没有命名空间! 我必须添加 xmlns:t="foobarbaz" xmlns:soap="foobarbaz" xmlns:m="foobarbaz" 这样它才能工作,hmmmmmmmm 不用担心,我解决了,我创建了一个函数,从 xml 代码中删除 :SOAP, :t, :m 然后在没有命名空间的情况下运行它,完美运行,感谢 allot 的帮助跨度> Bleah,您从服务器获取非命名空间格式的 XML?我会告诉负责该服务的人它正在输出垃圾。以上是关于PLSQL 从 XML 读取值(再次)?的主要内容,如果未能解决你的问题,请参考以下文章