read node leer example c# .net xml xpath xmldocument

c# - node - Eliminar XML utilizando un Xpath seleccionado y un bucle for



xpath expression example (3)

¿Por qué no usar XDocument ?

var xmlText = "<Elements><Element1 /><Element2 /></Elements>"; var document = XDocument.Parse(xmlText); var element = document.XPathSelectElement("Elements/Element1"); element.Remove(); var result = document.ToString();

result será <Elements><Element2 /></Elements> .

O:

var document = XDocument.Load(fileName); var element = document.XPathSelectElement("Elements/Element1"); element.Remove(); document.Savel(fileName);

[Editar] Para .NET 2, puedes usar XmlDocument :

XmlDocument document = new XmlDocument(); document.Load(fileName); XmlNode node = document.SelectSingleNode("Elements/Element1"); node.ParentNode.RemoveChild(node); document.Save(fileName);

[EDITAR]

Si necesita eliminar todos los elementos y atributos secundarios:

XmlNode node = document.SelectSingleNode("Elements"); node.RemoveAll();

Si necesita conservar atributos, pero eliminar elementos:

XmlNode node = document.SelectSingleNode("Elements"); foreach (XmlNode childNode in node.ChildNodes) node.RemoveChild(childNode);

Actualmente tengo el siguiente código:

XPathNodeIterator theNodes = theNav.Select(theXPath.ToString()); while (theNodes.MoveNext()) { //some attempts i though were close //theNodes.RemoveChild(theNodes.Current.OuterXml); //theNodes.Current.DeleteSelf(); }

Configuré xpath a lo que deseo devolver en xml y deseo eliminar todo lo que se haya enlazado. He intentado algunas formas de eliminar la información, pero no me gusta mi sintaxis. Encontré un ejemplo en el soporte de Microsoft: http://support.microsoft.com/kb/317666 pero me gustaría usar esto en vez de uno para cada uno.

Cualquier comentario o pregunta es apreciado.


Puede usar XmlDocument :

string nodeXPath = "your x path"; XmlDocument document = new XmlDocument(); document.Load(/*your file path*/);//or document.LoadXml(... XmlNode node = document.SelectSingleNode(nodeXPath); if (node.HasChildNodes) { //note that you can use node.RemoveAll(); it will remove all child nodes, but it will also remove all node'' attributes. for (int childNodeIndex = 0; childNodeIndex < node.ChildNodes.Count; childNodeIndex++) { node.RemoveChild(node.ChildNodes[childNodeIndex]); } } document.Save("your file path"));


string nodeXPath = "your x path"; XmlDocument document = new XmlDocument(); document.Load(/*your file path*/); XmlNode node = document.SelectSingleNode(nodeXPath); node.RemoveAll(); XmlNode parentnode = node.ParentNode; parentnode.RemoveChild(node); document.Save("File Path");