write read net documentelement create c# .net xmldocument

read - write xml c#



Cómo eliminar todas las etiquetas de comentario de XmlDocument (3)

Cuando carga el xml, puede usar XmlReaderSettings

XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; XmlReader reader = XmlReader.Create("...", settings); xmlDoc.Load(reader);

En una instancia existente, su solución se ve bien.

¿Cómo hago para eliminar todas las etiquetas de comentarios de una instancia de XmlDocument?

¿Hay una forma mejor que recuperar un XmlNodeList e iterar sobre ellos?

XmlNodeList list = xmlDoc.SelectNodes("//comment()"); foreach(XmlNode node in list) { node.ParentNode.RemoveChild(node); }


Hoy, buscando la forma de extraer <!-- --> de Visual Basic para aplicaciones (no C #), también encontré la propiedad nodeTypeString , pero ocupa más espacio. Aquí hay un ejemplo en VBA:

Dim xmldoc As New MSXML2.DOMDocument30 Dim oNodeList As IXMLDOMSelection Dim node As IXMLDOMNode Dim i As Long Dim FileName As String, FileName1 As String FileName = "..." '' Source FileName2 = "..." '' Target xmldoc.async = False '' ? xmldoc.Load FileName If (xmldoc.parseError.errorCode <> 0) Then Exit Sub '' or Function Set oNodeList = xmldoc.selectNodes("//*") '''' all nodes For i = 0 To oNodeList.length - 1 With oNodeList(i) For Each node In .childNodes If node.nodeTypeString = "comment" Then .removeChild node Next End With Next xmldoc.Save FileName2 Set oNodeList = Nothing '' ? Set xmldoc = Nothing

Omite los principales nodos de comentarios principales del documento, pero se pueden recuperar de alguna manera directamente si es necesario, por ejemplo, con With xmldoc.documentElement.childNodes


No, eso es todo, aunque estaría inclinado a colocar los nodos en una Lista primero.

No estoy seguro de la implementación .NET de XmlNodeList pero sé que las implementaciones anteriores de MSXML cargaron la lista de manera perezosa y el código como el anterior en el pasado terminaría fallando de alguna manera como resultado de la modificación del árbol DOM como Se enumera la lista.

foreach (var node in xml.SelectNodes("//comment()").ToList()) node.ParentNode.RemoveChild(node);