#mysql #xml #database #load-data-infile
#mysql #xml #База данных #load-data-infile
Вопрос:
Я хочу получить значение родительского дочернего узла в XML, но значение дочернего узла переопределяет его, потому что они имеют одно и то же имя
Как мне заставить его выбирать значение родительского узла без переопределения значения дочернего узла?
Я использую LOAD XML LOCAL INFILE
LOAD XML LOCAL INFILE 'person.xml'
INTO TABLE document
ROWS IDENTIFIED BY '<document>';
Это образец XML-данных
<document>
<name>John</name>
<age>19</age>
<street>
<name>Johnson Street</name>
</street>
</document>
Вместо тега name в теге document для печати John печатается Johnson Street
Комментарии:
1. переименуйте второй в fullname и не используйте повторяющиеся имена для разных разделов иерархии
2. Есть ли возможность переименовать его программно, не затрагивая другие? Я думаю, что файл представляет собой большой файл размером почти 40 МБ.
3. посмотрите, можно ли изменить приграмму, которая генерирует xml, иначе, если вы создаете тысячи файлов xml, вам нужно написать простую программу
Ответ №1:
Это должно быть выполнимо с использованием xpath:
SET @xml = '<document>
<name>John</name>
<age>19</age>
<street>
<name>Johnson Street</name>
</street>
</document>
';
SET @i =1;
SELECT @i, ExtractValue(@xml, './/street/name');
Комментарии:
1. Плохой дизайн — это плохой дизайн
2. @nbk Действительно так!