Me gustaría insertar una imagen dentro de un elemento del archivo XML, ¿cuál es la mejor manera de hacerlo? ¿Podría sugerir alguna buena forma de incluir imágenes en un archivo xml?Insertar imágenes en el archivo XML
Respuesta
La forma más común de hacerlo es incluir el binario como base-64 en un elemento. Sin embargo, esto es una solución y agrega un poco de volumen al archivo.
Por ejemplo, este es el bytes 00 a 09 (en cuenta que necesitábamos 16 bytes para codificar un valor de 10 bytes de datos):
<xml><image>AAECAwQFBgcICQ==</image></xml>
cómo lo hace la codificación varía según la arquitectura. Por ejemplo, con .NET puede usar Convert.ToBase64String
o XmlWriter.WriteBase64
.
Dado que XML es un formato de texto y las imágenes generalmente no lo son (excepto en algunos formatos antiguos y arcaicos) no existe una forma realmente sensata de hacerlo. Observar cosas como ODT u OOXML también le muestra que no incrustan imágenes directamente en XML.
Lo que puede hacer, sin embargo, es convertirlo a Base64 o similar e incrustarlo en el XML.
Sin embargo, el manejo en blanco de XML puede complicar aún más las cosas en tales casos.
XML no es un formato para almacenar imágenes, ni datos binarios. Creo que todo depende de cómo quieras usar esas imágenes. Si está en una aplicación web y quisiera leerla desde allí y mostrarla, almacenaría las URL. Si necesita enviarlos a otro punto final web, los serializaría, en lugar de persistir manualmente en XML. Por favor explique cuál es el escenario.
Siempre convierto los datos de bytes en una codificación Base64 y luego inserto la imagen.
Esta es también la forma en que Word lo hace, ya que se trata de archivos XML (no es que Word sea un buen ejemplo de cómo trabajar con XML: P).
Aquí hay un código tomado de Kirk Evans Blog que muestra cómo codificar una imagen en C#;
//Load the picture from a file
Image picture = Image.FromFile(@"c:\temp\test.gif");
//Create an in-memory stream to hold the picture's bytes
System.IO.MemoryStream pictureAsStream = new System.IO.MemoryStream();
picture.Save(pictureAsStream, System.Drawing.Imaging.ImageFormat.Gif);
//Rewind the stream back to the beginning
pictureAsStream.Position = 0;
//Get the stream as an array of bytes
byte[] pictureAsBytes = pictureAsStream.ToArray();
//Create an XmlTextWriter to write the XML somewhere... here, I just chose
//to stream out to the Console output stream
System.Xml.XmlTextWriter writer = new System.Xml.XmlTextWriter(Console.Out);
//Write the root element of the XML document and the base64 encoded data
writer.WriteStartElement("w", "binData",
"http://schemas.microsoft.com/office/word/2003/wordml");
writer.WriteBase64(pictureAsBytes, 0, pictureAsBytes.Length);
writer.WriteEndElement();
writer.Flush();
- 1. Insertar imagen en el archivo xml usando C#
- 2. Aloha editor: Insertar imágenes/imágenes
- 3. ¿Cómo insertar comentarios XML en Serialización XML?
- 4. Insertar datos en un archivo XML con PHP DOM
- 5. archivo EXE Insertar en el archivo Excel
- 6. Imágenes en el archivo app_offline
- 7. valor de actualización en el archivo xml
- 8. DOM appendChild para insertar imágenes
- 9. Cómo insertar imágenes dinámicamente en Crystal Reports
- 10. ¿Cómo insertar imágenes en mongoDB usando java?
- 11. Cómo puedo insertar imágenes en el documento .rnw
- 12. XML en el archivo csproj
- 13. Insertar texto en el archivo existente
- 14. docbook maxwidth en las imágenes? (xml: fo)
- 15. Java - Codificación de imágenes en XML
- 16. Cómo agrupar imágenes en el archivo jar
- 17. Insertar archivo en mysql Blob
- 18. Generar archivo XML usando el archivo XSD
- 19. Mosaico de imágenes en Android con ImageView en XML
- 20. Cómo leer el archivo XML en Android
- 21. Agregar comentarios XML en el archivo marshaled
- 22. Cómo analizar el archivo XML en RapidXML
- 23. Lea el archivo XML en XmlDocument
- 24. ¿Cómo leer el archivo XML en C#?
- 25. Incluyendo un archivo XML en un archivo XML/XSL
- 26. conversión de archivo XML en otro archivo XML mediante XSLT
- 27. Insertar y mostrar imágenes en el editor de contenido TinyMCE en el sitio PHP
- 28. archivo XML Abierto de res/xml en Android
- 29. Insertar bytes en el medio del archivo binario
- 30. Insertar firma digital en el archivo pdf existente
Estoy hablando de los archivos Word XML que puede obtener cuando "Guarda como 'XML'". –
Soy corregido. Sin embargo, nunca he visto a nadie usar eso (y mucho menos ver esos archivos en la naturaleza). – Joey