2010-11-09 30 views

Respuesta

13

Bueno, la identidad a la que te puedes vincular es portable a cualquier procesador XSLT (Saxon, msxml, etc.).

Además, puede mirar xmllint que es parte del kit de herramientas LibXML2. La opción --format le permite imprimir bastante la entrada. Funcionalidad similar existe en XMLStarlet (que usa LibXML2 bajo el capó iirc).

+5

" cat config.xml | xmllint --format - "funciona hermoso. –

+1

Funciona muy bien para cadenas también: 'echo" "| xmllint --format -' – Matt

1

Me gusta la biblioteca java XOM para la manipulación de XML. Tiene un buen Pretty Printer que proporciona un gran control sobre la salida.

9

xmlstarlet fo es lo que uso para la impresión bonita. Xmlstarlet tiene una serie de opciones:

$ xmlstarlet fo --help 
XMLStarlet Toolkit: Format XML document 
Usage: xml fo [<options>] <xml-file> 
where <options> are 
    -n or --noindent   - do not indent 
    -t or --indent-tab   - indent output with tabulation 
    -s or --indent-spaces <num> - indent output with <num> spaces 
    -o or --omit-decl   - omit xml declaration <?xml version="1.0"?> 
    -R or --recover    - try to recover what is parsable 
    -D or --dropdtd    - remove the DOCTYPE of the input docs 
    -C or --nocdata    - replace cdata section with text nodes 
    -N or --nsclean    - remove redundant namespace declarations 
    -e or --encode <encoding> - output in the given encoding (utf-8, unicode...) 
    -H or --html    - input is HTML 

Un buen ingeniero XML debe ser capaz de manejar xmlstarlet.

3

Puede usar http://prettydiff.com/?m=beautify Lamentablemente, está escrito en JavaScript, pero es una aplicación completa, por lo que nunca tiene que saberlo. Simplemente sepa que puede ejecutar desde el interior de su navegador sin descargar o instalar nada.

0

Cuando se utiliza libxml2 en Python:

with open(pathToSaveResult, 'w') as fd: 
    xmlParsed.saveTo(fd,format = libxml2.XML_SAVE_FORMAT) 

Editar: Parece que hay algún error en libxml2 ... bastante impresión se realiza con la etiqueta libxml2.XML_SAVE_NO_EMPTY en lugar de libxml2.XML_SAVE_FORMAT

Cuestiones relacionadas