Esto elimina todos los elementos del documento:nodos Extracción de XDocument
XDocument document = XDocument.Load(inputFile);
foreach (XElement element in document.Elements())
{
element.Remove();
}
document.Save(outputFile);
Esto no tiene ningún efecto:
XDocument document = XDocument.Load(inputFile);
foreach (XElement element in document.Elements())
{
//element.Remove();
foreach (XElement child in element.Elements())
child.Remove();
}
document.Save(outputFile);
Me estoy perdiendo algo aquí? Dado que todas estas son referencias a elementos dentro del XDocument, ¿no deberían los cambios entrar en vigencia? ¿Hay alguna otra forma en que debería eliminar a los niños anidados de un XDocument?
Gracias!
¿Usted ha depurado el código? ¿Estás seguro de que element.Elements() está devolviendo elementos secundarios? Solo estoy buscando información un poco más sobre exactamente lo que está viendo suceder. – jrista
@jrista Devuelve elementos secundarios, pero el problema parece ser que el enumerador se comporta de manera diferente después de un '.Eliminar()'. – Jake
Sí, eso es lo que esperaría. Los enumeradores generalmente lanzan excepciones cuando modifica la colección, ya que dependen mucho de la estabilidad de la colección subyacente para funcionar correctamente. De hecho, me sorprende que pueda continuar después de eliminar un nodo mientras usa un foreach/enumerator. En general, recomendaría usar un ciclo while (o posiblemente para ... pero eso es más complicado), en lugar de un foreach. – jrista