2

У меня есть несколько огромных файлов конфигурации на основе XML с 125000 строк в них. Проблема в том, что они автоматически генерируются системой, которую я использую, и "дочерние" теги располагаются в случайном порядке в пределах их соответствующих родительских тегов. Это означает, что сравнение различий невозможно.

Я хочу рекурсивно отсортировать все теги в родительском теге по значению name="" . Некоторые родительские теги появляются только один раз и не имеют параметра name="" ; они должны быть отсортированы по имени самого tag .

Как только файлы отсортированы таким образом, их можно легко сравнить с помощью обычных инструментов. В настоящее время мы используем ExamXML, который может соответствовать несортированным XML-файлам, но он не работает, потому что файлы слишком велики.

Есть ли приложение, которое может это сделать? (Windows предпочтительнее; Linux только в крайнем случае)

Я не хочу погружаться в разработку или работу XSLT. Я думаю, что кто-то уже сделал простой инструмент сортировки, подобный этому - я просто не могу найти его с помощью Google.

Обновить:
С помощью этого сайта я создал небольшой пакет, которым хочу поделиться: XML-Sorter_v0.4public.zip

Обновление: дополнительный вопрос здесь.

1 ответ1

4

Я знаю, что вы не хотите погружаться в XSLT, но это самый простой способ сделать это. Все, что нужно, это:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="*">
  <xsl:copy>
    <xsl:copy-of select="@*"/>
    <xsl:apply-templates>
      <xsl:sort select="(@name, name())[1]"/>
    </xsl:apply-templates>
  </xsl:copy>
</xsl:template>
</xsl:stylesheet>

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .