【问题标题】:PLSQL read value from XML (Again)?PLSQL 从 XML 读取值(再次)?
【发布时间】: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>

我真的感觉不好,因为我无法理解!

【问题讨论】:

    标签: xml oracle plsql


    【解决方案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?我会告诉负责该服务的人它正在输出垃圾。
    猜你喜欢
    • 2011-06-28
    • 2011-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多