#mysql #xml
#mysql #xml
Вопрос:
Я хочу извлечь идентификатор местоположения из give xml, а также хочу поставить условие, которое извлекает его, если местоположение существует.
<?xml version="1.0" encoding="UTF-8"?>
<id>1006221342207</id>
<name>Hitesh Modha</name>
<email>hitesh.99@hotmail.com</email>
<location>
<id>115440481803904</id>
<name>Ahmedabad, India</name>
</location>
Я пробовал :
SET location = ExtractValue(xml, '//locations//id');
SELECT ExtractValue(location, '//id');
но это не работает.
Пожалуйста, помогите
Комментарии:
1. Вы можете использовать класс SimpleXML, а затем вставить свои данные в базу данных
2. Ваш XML неверен, в нем отсутствует элемент документа.
3. @ThW: это не недопустимо, extractValue ожидает фрагмент XML, а не документ, так что все в порядке.
Ответ №1:
SQL
SELECT
ExtractValue('<?xml version="1.0" encoding="UTF-8"?>
<id>1006221342207</id>
<name>Hitesh Modha</name>
<email>hitesh.99@hotmail.com</email>
<location>
<id>115440481803904</id>
<name>Ahmedabad, India</name>
</location>', '//location//id');
возвращает только пустой результат, потому что путь //locations//id
пуст для используемого фрагмента XML.
Скорее всего, вы ищете '/location/id'
выражение xpath, поскольку оно вернет значение id text()
: 115440481803904
Следующая ошибка, которую вы совершаете, заключается в том, что вы думаете ExtractValue
, что вернет фрагмент XML, который вы можете повторно запустить ExtractValue
. Это просто не тот случай (только если — что не так в вашем примере — в найденном узле был бы XML, закодированный как CDATA text()
).
Все детали подробно описаны здесь:
Если вы не можете обойти эти заблуждения, я не могу дать вам никаких дополнительных предложений.