【问题标题】:ORA-31011: XML parsing failed while trying to get XML outputORA-31011: 尝试获取 XML 输出时 XML 解析失败
【发布时间】:2019-06-22 01:16:09
【问题描述】:

尝试从 CLOB XML 列中获取值时,我收到以下错误:

ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: '/l-analysis/vehicle/odometer-reading/reading value/text()'
31011. 00000 -  "XML parsing failed"
*Cause:    XML parser returned an error while trying to parse the document.
*Action:   Check if the document to be parsed is valid.

我有以下 XML 输出:

<?xml version="1.0" encoding="UTF-8"?>
<l-analysis>
   <vehicle>
      <make>SAAB</make>
      <model>9000 CSI</model>
      <body-style code="SL">Saloon</body-style>
      <vehicle-type code="7">Passenger car/van</vehicle-type>
      <odometer-reading latest="true">
         <reading value="154267213">154267213</reading>
         <reading-date value="2006-07-17">17-Jul-2006</reading-date>
      </odometer-reading>
   </vehicle>
</l-analysis>

当尝试获取 reading value 值时,我正在运行以下查询:

select XMLTYPE(xml_data).EXTRACT('/l-analysis/vehicle/odometer-reading/reading value/text()').getStringVal() AS XML FROM lm

我相信错误是由于reading value 有空格?因为另一个没有空格的 XML 列可以工作。

我怎样才能让它工作?

【问题讨论】:

    标签: xml oracle oracle11g


    【解决方案1】:

    valuereading 的属性而不是其文本。要解决节点的属性,请使用@&lt;attribute name&gt;

    SELECT xmltype(xml_data).extract('/l-analysis/vehicle/odometer-reading/reading/@value').getstringval() AS xml
           FROM lm;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-22
      • 1970-01-01
      • 2018-02-07
      • 1970-01-01
      • 2011-02-16
      • 2011-03-28
      • 1970-01-01
      相关资源
      最近更新 更多