6

В настоящее время я работаю с файлами 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 ответ1

3

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

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

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

графический интерфейс пользователя

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

  • XMLTidy (последнее обновление 2005 года; может быть устаревшим)
  • Dom4j (включен здесь, потому что "программирование" уже дано вам полностью в ответе SO)

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

  • Напишите свою собственную программу, используя одно из следующих:
  • Xerces
  • dOM4J
  • саксофон
  • LibXML
  • Базовые библиотеки, которые Eclipse использует для разбора XML, что, вероятно, позволит вам программно форматировать XML и устанавливать настраиваемые правила форматирования, как вы видите в опциях Eclipse

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

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

И наконец, обратите внимание, что если вы хотите, чтобы вы помогли сообществу разобраться в написании программы, использующей одну из этих технологий, вам следует задать вопрос, специфичный для одного выбранного анализатора / генератора / библиотеки XML в StackOverflow, а не в SuperUser. Здесь мы в первую очередь занимаемся вопросами использования существующих программ.

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