Ser pragmático, XDocument
vs XmLDocument
no es todo o nada (a menos que esté en Silverlight) - por lo que si XmlDoucument
hace algo que necesita, y XDocument
no lo hace, entonces tal vez usar XmlDocument
(con ImportNode
etc).
Dicho esto, incluso con XDocument
, puede presumiblemente usar XNode.ReadFrom
para importar cada uno, luego simplemente .Add
a la colección principal.
Por supuesto, si los archivos son grandes, XmlReader/XmlWriter
podría ser más eficiente ... pero más complejo. Afortunadamente, XmlWriter
tiene un método WriteNode
que acepta un XmlReader
, por lo que puede navegar hasta el primer elemento secundario en el XmlReader
y luego simplemente cargarlo en el archivo de salida. Algo así como:
static void AppendChildren(this XmlWriter writer, string path)
{
using (XmlReader reader = XmlReader.Create(path))
{
reader.MoveToContent();
int targetDepth = reader.Depth + 1;
if(reader.Read()) {
while (reader.Depth == targetDepth)
{
writer.WriteNode(reader, true);
}
}
}
}
Gracias. Lo siento, odio XSL. Definitivamente preferiría una solución basada en el código C#. – Larry
No hay problema, entiendo la evasión de XSL ya que a veces puede ser muy confuso. – schnaader