Как отформатировать XML-файл с длинным списком атрибутов?

Как отформатировать XML-файл с длинным списком атрибутов?

В настоящее время я работаю с XML-файлами, которые содержат элементы с длинным списком атрибутов. Когда я пытаюсь переделать отступ всего XML-файла, используя xmllint --format myfile.xmlтолько отступы элементов, атрибуты по-прежнему остаются в одной строке.

Существует ли какая-либо программа (командная строка, Windows или GNU/Linux), которая поддерживает переформатирование XML, включая атрибуты?

Например, XML-код вида:

<root>
  <node attribute1="some long attribute value" attribute2="some long attribute value" attribute3="..."/>
</root>

должен быть выведен результат, аналогичный следующему:

<root>
  <node attribute1="some long attribute value"
        attribute2="some long attribute value"
        attribute3="..."/>
</root>

решение1

Хотя ваш благонамеренный поиск "инструмента командной строки" совершенно хорош, к сожалению, я думаю, что любое действительно жизнеспособное решение этой проблемы будет включать в себя написание некоторого кода самостоятельно или, по крайней мере, использование существующего кода (например, парсера/генератора XML). В комментариях я опубликовал несколько вещей, которые вы можете попробовать, которые могут или не могут дать вам точный стиль форматирования, который вы ищете. Если это действительно близко, но не совсем, ваш лучший выбор, вероятно, отредактировать исходный код программы, которая "почти" туда попадает. Конечно, если вы не знаете никаких языков программирования, это может быть немного тупиковой ситуацией.

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

Возможные решения без программирования

графический интерфейс

Командная строка

  • XMLTidy(последнее обновление 2005 г.; может быть устаревшим)
  • Дом4дж(включено сюда, поскольку «программирование» уже дано вам в полном объеме в ответе SO)

Возможные решения с помощью программирования

  • Напишите свою собственную программу, используя один из следующих способов:
  • Ксерцес
  • Дом4дж
  • Саксофон
  • libxml
  • Базовые библиотеки, которые Eclipse использует для анализа XML, что, вероятно, позволит вам программно форматировать XML и устанавливать пользовательские правила форматирования, как вы видите в параметрах Eclipse.

... который обрабатывает XML именно так, как вам нужно.

Смотрите такжеэтотТАКОЙ вопрос.

Наконец, обратите внимание, что если вам нужна помощь сообщества в написании программы с использованием одной из этих технологий, вам следует задать вопрос, касающийсяодинвыбранный XML-парсер/генератор/библиотека наПереполнение стекаинетна SuperUser. В первую очередь мы занимаемся вопросами использования существующих программ, здесь.

Связанный контент