Удобный формат XML (с выравниванием атрибутов)

Это дополнительный вопрос к Как красиво распечатать XML из командной строки?.

Есть ли в libxml2 какой-либо инструмент, который позволит мне также выровнять атрибуты каждого узла? У меня есть большой XML-документ, логическую структуру которого я не могу изменить, но я хотел бы

<a attr="one" bttr="two" tttr="three" fttr="four"/>

в

<a attr   = "one"
   bttr   = "two"
   tttr   = "three"
   fttr   = "four"
   longer = "attribute" />

person Sean Allred    schedule 17.09.2014    source источник


Ответы (1)


xmllint имеет параметр --pretty, который поддерживает три уровня красивости. Если этот вывод:

<?xml version="1.0"?>
<a
    attr="one"
    bttr="two"
    tttr="three"
    fttr="four"
/>

подходит для вас, тогда используйте --pretty 2 :

xmllint --pretty 2 - <<< '<a attr="one" bttr="two" tttr="three" fttr="four"/>'
person hek2mgl    schedule 17.09.2014
comment
У моего xmllint такой возможности нет... какая у вас версия? Я использую libxml version 20706 - person Sean Allred; 17.09.2014
comment
Я использую xmllint: using libxml version 20901 - person hek2mgl; 17.09.2014
comment
:( В этом и заключается проблема, я полагаю. Последний раз моя копия была упакована 2013-01-30 14:59... вздох. - person Sean Allred; 17.09.2014
comment
Несколько лет спустя, и хотя это лучший ответ, который я нашел, он все еще довольно сломан. Хотя он довольно хорошо справляется с атрибутами, он полностью искажает остальные элементы: xmllint --pretty 2 - <<< '<x><a attr="one" bttr="two" tttr="three" fttr="four"/><b>something</b></x>' ужасен. - person rbellamy; 27.02.2016
comment
@rbellamy Я вижу. Выглядит странно! :) Я думаю, лучшее, что вы можете сделать в этом случае, это написать что-то самостоятельно.. (или изменить существующие преттификаторы) - person hek2mgl; 27.02.2016