Автоматизация поиска замены в нескольких файлах XML - PullRequest
0 голосов
/ 08 июля 2011

Мне нужно протестировать программное усовершенствование, которое я недавно сделал.Для этого мне нужно внести 1000 изменений в 56 файлов загрузчика xml (итого 56 000).В частности, мне нужно изменить следующее:

   </users> 
</service>

на это

   </users>
   <rules>
       <ruleid="13e77ade-f15c-433f-aac8-2fdaf2d867a5" /> 
   </rules>
   <temprestriction /> 
</service>

Я мог бы найти / заменить каждый из 56 файлов, но это было бы утомительно.Есть ли хороший способ автоматизировать этот процесс?Заранее спасибо.

1 Ответ

2 голосов
/ 08 июля 2011

Как и @ConradFrix, упомянутый в комментарии: вы можете использовать различные инструменты / методы для решения этой проблемы.

Вот решение, основанное на XSLT.Код не тестировался всесторонне.

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes"/>

    <xsl:template match="node() | @*" name="identity">
        <xsl:copy>
            <xsl:apply-templates select="node() | @*"/>
        </xsl:copy>
    </xsl:template>

    <xsl:template match="service/*[last()][self::users]">
        <xsl:call-template name="identity"/>
        <rules>
            <rule id="13e77ade-f15c-433f-aac8-2fdaf2d867a5" />
        </rules>
        <temprestriction />
    </xsl:template>

</xsl:stylesheet>

Ключевые моменты: 1) использование шаблона идентификации для рекурсивного копирования узлов документа 2) отдельный шаблон для добавления новых элементов после элемента <users>, еслипоследний потомок элемента <service>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...