Я работаю с дампом wordpress xml, и по любой причине wordpress экспортирует каждого пользователя в нашей базе данных как «автора» каждого поста.Чтобы облегчить работу с xml-файлом, я хотел бы удалить все авторские узлы, кроме одного.
Вот пример того, что у меня есть:
<rss version="2.0" xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wp="http://wordpress.org/export/1.2/">
<wp:author>
<wp:author_id>35622</wp:author_id>
<wp:author_login>some_username_1</wp:author_login>
<wp:author_email>email@address.com</wp:author_email>
<wp:author_display_name><![CDATA[some_username_1]]></wp:author_display_name>
<wp:author_first_name><![CDATA[]]></wp:author_first_name>
<wp:author_last_name><![CDATA[]]></wp:author_last_name>
</wp:author>
<wp:author>
<wp:author_id>35290</wp:author_id>
<wp:author_login>my_unique_username</wp:author_login>
<wp:author_email>email@address.com</wp:author_email>
<wp:author_display_name><![CDATA[my_unique_username]]></wp:author_display_name>
<wp:author_first_name><![CDATA[]]></wp:author_first_name>
<wp:author_last_name><![CDATA[]]></wp:author_last_name>
</wp:author>
<wp:author>
<wp:author_id>35289</wp:author_id>
<wp:author_login>some_username_2</wp:author_login>
<wp:author_email>email@address.com</wp:author_email>
<wp:author_display_name><![CDATA[some_username_2]]></wp:author_display_name>
<wp:author_first_name><![CDATA[]]></wp:author_first_name>
<wp:author_last_name><![CDATA[]]></wp:author_last_name>
</wp:author>
<wp:author>
<wp:author_id>33404</wp:author_id>
<wp:author_login>some_username_3</wp:author_login>
<wp:author_email>email@address.com</wp:author_email>
<wp:author_display_name><![CDATA[some_username_3]]></wp:author_display_name>
<wp:author_first_name><![CDATA[]]></wp:author_first_name>
<wp:author_last_name><![CDATA[]]></wp:author_last_name>
</wp:author>
Timesеще несколько тысяч записей
Я хотел бы удалить все узлы, кроме этого:
<wp:author>
<wp:author_id>35290</wp:author_id>
<wp:author_login>my_unique_username</wp:author_login>
<wp:author_email>email@address.com</wp:author_email>
<wp:author_display_name><![CDATA[my_unique_username]]></wp:author_display_name>
<wp:author_first_name><![CDATA[]]></wp:author_first_name>
<wp:author_last_name><![CDATA[]]></wp:author_last_name>
</wp:author>
Попытка сделать это в сценарии оболочки, но я не совсем уверен, гденачать, так как я никогда раньше не использовал xmlstarlet, поэтому буду признателен за любую помощь.
Обновлено, чтобы отразить корень данных и найденное мной решение:
xmlstarlet ed -d "//wp:author[wp:author_id != '35290']" file.xml > out.xml