Estoy escribiendo un archivo xml utilizando la API xmlwriter de libxml2.sangría xml
cuando abro el archivo con el bloc de notas, la sangría no es correcta.
¿Alguien sabe cómo solucionarlo?
muchas gracias.
Estoy escribiendo un archivo xml utilizando la API xmlwriter de libxml2.sangría xml
cuando abro el archivo con el bloc de notas, la sangría no es correcta.
¿Alguien sabe cómo solucionarlo?
muchas gracias.
Me voy un poco de una extremidad aquí, pero diré que por "la sangría no es correcta" quiere decir que no está sangrado en absoluto.
libxml2, de forma predeterminada, no sangrará su archivo XML, porque en XML, los espacios en blanco (incluido el utilizado para la sangría) son datos significativos. Es decir, este archivo XML:
<root>
<foo>Bar</foo>
</root>
es semánticamente diferente de:
<root><foo>Bar</foo></root>
... en que las dos piezas de datos de caracteres desde el primer archivo XML podrían ser importantes para usted, el programador, por lo tanto, XML los deja allí cuando lee el archivo, y no los generará (a menos que se indique) al escribir.
Dicho esto, este es un bit de abuso de XML. La mayoría de XML que he visto es, lamentablemente, sangrado. libxml2 tiene opciones para generar automáticamente la sangría al escribir, y eliminarla al leer, pero tenga en cuenta que hay algunas advertencias: podría equivocarse. Los doctores dicen más.
creo que esta función podría ayudarle (nunca he utilizado en realidad este mismo :-)), si desea que se va a sangrar para usted: xmlTextWriterSetIndent
caso de la advertencia aquí: libxml2 FAQ
Y la información aquí: XML Specification
creo que solo quería la sangría para que pueda leer el archivo xml ... en ese caso, ahora puede usar google chrome para ver el xml y se mostrará ya sangrado (recuerde que es no es una idea tan buena para sangrar un archivo xml con libxml2).
¿Podría decirnos por qué no es una buena idea aplicar sangría con libxml2? – Josejulio
Su derecho, quise decir que libxml2 escribe datos sin indentaciones. –
cuando uso la función xmlTextWriterSetIndent agrega espacios después de cada etiqueta pero no agrega líneas nuevas. hacer que el archivo se vea extraño en el bloc de notas. –
Me atrevería a adivinar que solo está agregando un '\ n', y usted (o él) tiene el archivo abierto en modo binario. No use el Bloc de notas, posiblemente sea el peor editor de texto del planeta. Notepad ++ lo convierte en un buen comienzo, y si su archivo está utilizando solo '\ n' para las terminaciones de línea (típico de los archivos Unix), Notepad ++ podrá abrirlo. – Thanatos