Quiero fusionar dos XmlDocument
s insertando un segundo documento XML al final de un Xmldocument
existente en C#. ¿Cómo se hace esto?Cómo fusionar dos XmlDocuments en C#
Respuesta
Algo como esto:
foreach (XmlNode node in documentB.DocumentElement.ChildNodes)
{
XmlNode imported = documentA.ImportNode(node, true);
documentA.DocumentElement.AppendChild(imported);
}
Tenga en cuenta que esto ignora el elemento del documento en sí del documento B, por lo que si tiene un nombre de elemento diferente o atributos sobre los que desea copiar, deberá resolver exactamente lo que desea hacer.
EDIT: Si, de acuerdo con su comentario, que desea incrustar el toda del documento B en el documento A, que es relativamente fácil:
XmlNode importedDocument = documentA.ImportNode(documentB.DocumentElement, true);
documentA.DocumentElement.AppendChild(importedDocument);
Esto todavía va a ignorar cosas como la declaración XML del documento B, si lo hay, no sé qué ocurriría si intentara importar el documento como como un nodo de un documento diferente, e incluye una declaración XML ... pero sospecho que hará lo que quiera. .
Malas noticias. Siempre que los documentos xml tengan solo un elemento raíz, no se puede colocar el contenido de un documento al final del segundo. ¿Tal vez this es lo que estás buscando? Esto demuestra la facilidad con que se puede combinar archivos XML utilizando LINQ to XML
Alternativamente, si usted está utilizando XmlDocuments puede intentar hacerlo de esta manera:
XmlDocument documentA;
XmlDocument documentB;
foreach(var childNode in documentA.DocumentElement.ChildNodes)
documentB.DocumentElement.AppendChild(childNode);
Quiero agregar el b XmlDocument como nodo de un Xmldocument –
Insertar un documento XML completo al final de otro documento XML garantiza la producción de XML no válido. XML requiere que haya un solo elemento de "documento". Así, en el supuesto de que sus archivos fueron los siguientes:
a.xml
<document>
<element>value1</element>
<element>value2</element>
</document>
B.xml
<document>
<element>value3</element>
<element>value4</element>
</document>
El documento resultante mediante simplemente añadiendo uno al final de la otro:
<document>
<element>value1</element>
<element>value2</element>
</document>
<document>
<element>value3</element>
<element>value4</element>
</document>
es XML no válido.
Suponiendo, en cambio, que los dos documentos tienen un elemento documento común, y que desea insertar los hijos del elemento documento a partir de B en el elemento de documento de A, se puede utilizar el siguiente:
var docA = new XmlDocument();
var docB = new XmlDocument();
foreach (var childEl in docB.DocumentElement.ChildNodes) {
var newNode = docA.ImportNode(childEl, true);
docA.DocumentElement.AppendChild(newNode);
}
Este producirá el siguiente documento dado mis ejemplos más arriba:
<document>
<element>value1</element>
<element>value2</element>
<element>value3</element>
<element>value4</element>
</document>
usando System.Xml – MacGyver
Esta es la forma más rápida de combinar documentos xml.
XElement xFileRoot = XElement.Load(file1.xml);
XElement xFileChild = XElement.Load(file2.xml);
xFileRoot.Add(xFileChild);
xFileRoot.Save(file1.xml);
- 1. fusionar y actualizar dos listas en C#
- 2. Cómo fusionar dos listas IQueryable
- 3. php fusionar dos matrices
- 4. Cómo fusionar dos objetos java.util.Properties?
- 5. Comparar (y fusionar) dos proyectos VS C#
- 6. Fusionar dos enteros en Python
- 7. Android fusionar dos imágenes
- 8. ¿Cómo "fusionar" dos URI en Java?
- 9. fusionar dos expresiones regulares
- 10. Fusionar dos listas
- 11. Fusionar dos listas basadas en la clave C#
- 12. C# fusionar dos objetos juntos en el tiempo de ejecución
- 13. ¿Cómo puedo fusionar dos tablas MySQL?
- 14. Cómo puedo fusionar dos árboles binarios
- 15. Fusionar dos archivos XML en Java
- 16. fusionar dos componentes de la lista
- 17. Fusionar valores de dos formularios en enviar
- 18. ¿Cómo usar Canvas para fusionar dos imágenes en Android?
- 19. ¿Cómo puedo fusionar dos mapas en la misma lista?
- 20. Cómo fusionar dos bibliotecas estáticas "ar" en una
- 21. Cómo fusionar dos objetos UIImage en Objective-C en iPhone SDK
- 22. Fusionar dos objetos JSON mediante programación
- 23. Concatenar/fusionar/unir dos árboles AVL
- 24. ¿Extender una función - fusionar dos funciones?
- 25. fusionar dos matrices (claves y valores) en un objeto
- 26. ¿Cómo fusionar dos ramas sin un antecesor común?
- 27. Cómo fusionar eficientemente archivos gigantescos con C#
- 28. cómo fusionar dos mapas de bits uno sobre otro
- 29. ¿Cómo fusionar dos celdas de una fila qtable?
- 30. ¿Es posible fusionar dos registros utilizando la instrucción "eliminar de"?
He intentado editar su pregunta para que quede más clara. Espero no haber cambiado el significado de lo que estabas tratando de preguntar. –
Gracias. he encontrado una solución sin ciclo: XmlNode footerNode = a.CreateElement ("ADD"); footerNode.InnerXml = b.SelectSingleNode ("/ root"). InnerXml; a.DocumentElement.AppendChild (footerNode); –
Tenga en cuenta que este sitio no es un servicio de escritura de código. Si [editar] su pregunta para describir lo que ha intentado lejos y dónde está atascado, entonces podemos intentar ayudar con problemas específicos. También deberías leer [preguntar]. –