ORA-31011: Сбой синтаксического анализа XML при попытке получить вывод XML - PullRequest
0 голосов
/ 29 января 2019

При попытке получить значение из столбца XML CLOB я получаю следующую ошибку:

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, у которого нет пробелов, он работает.

Как я могу заставить это работать?

1 Ответ

0 голосов
/ 29 января 2019

value является атрибутом reading, а не его текстом.Для адресации атрибута узла используйте @<attribute name>.

SELECT xmltype(xml_data).extract('/l-analysis/vehicle/odometer-reading/reading/@value').getstringval() AS xml
       FROM lm;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...