Мне нужно перенастроить узлы table_data в перкриптивном порядке с помощью PHP DOM.Как изменить XML-узлы с помощью PHP DOM?
Например, учитывая XML ниже мне нужны данные таблицы, расположенные в следующем порядке:
bugs_status
attachments
bugs
Version
Таким образом, этот XML должен идти от этого:
<database name="foodatabase">
<table_data name="Version">
</table_data>
<table_data name="attachments">
</table_data>
<table_data name="bugs">
<row>
<field name="problem_id">7</field>
<field name="problem">Something is broken</field>
</row>
<row>
<field name="problem_id">8</field>
<field name="problem">Something else is broken</field>
</row>
</table_data>
<table_data name="bugs_status">
<row>
<field name="bugs_status_id">1</field>
<field name="bugs_status_priority">5</field>
<field name="bugs_status_name">Acknowledged</field>
</row>
<row>
<field name="bugs_status_id">2</field>
<field name="bugs_status_priority">10</field>
<field name="bugs_status_name">Feedback</field>
</row>
<row>
<field name="bugs_status_id">3</field>
<field name="bugs_status_priority">20</field>
<field name="bugs_status_name">Client Confirmation</field>
</row>
</table_data>
</database>
к этому:
<database name="foodatabase">
<table_data name="bugs_status">
<row>
<field name="bugs_status_id">1</field>
<field name="bugs_status_priority">5</field>
<field name="bugs_status_name">Acknowledged</field>
</row>
<row>
<field name="bugs_status_id">2</field>
<field name="bugs_status_priority">10</field>
<field name="bugs_status_name">Feedback</field>
</row>
<row>
<field name="bugs_status_id">3</field>
<field name="bugs_status_priority">20</field>
<field name="bugs_status_name">Client Confirmation</field>
</row>
</table_data>
<table_data name="attachments">
</table_data>
<table_data name="bugs">
<row>
<field name="problem_id">7</field>
<field name="problem">Something is broken</field>
</row>
<row>
<field name="problem_id">8</field>
<field name="problem">Something else is broken</field>
</row>
</table_data>
<table_data name="Version">
</table_data>
</database>
Обратите внимание, что узлы table_data и их дочерние узлы перемещаются вместе р. Это важно, потому что мы переставляем эти таблицы и их строки для удовлетворения внешних отношений.
Понятно, что это не сложно, инвертируйте список, а затем перенастройте их, выполнив поиск каждого узла в списке и разместив его перед первым дочерним элементом этого элемента.
Моя проблема: я не могу понять, как захватить указанный узел, удалить его из текущей позиции и поместить его перед первым ребенком.
В теории порядок узлов XML должен не имеет значения, так как в этом случае запросы будут XPath всегда работают независимо друг от друга порядка. Если вы просто зацикливаетесь на XML и полагаетесь на заказ, то, как вы достигнете этого, будет зависеть ваша библиотека читателей XML, которую вы используете. – apokryfos
[PHPUnit не удалось импортировать базу данных] (https://phpunit.de/manual/current/en/database.html#database.beware-of-foreign-keys) правильно, если вы не закажете таблицы, в которых размещены внешние ключи выше таблицы, в которых они нуждаются. Я решил это, передав таблицы в правильном порядке в mysqldump. – DrDamnit