2011-07-08 34 views
5

¿Cómo eliminar el atributo de XmlDocument si el atributo existe en el documento? Por favor ayuda. Estoy usando RemoveAttribute, pero ¿cómo puedo verificar si existe?eliminar atributo si existe desde xmldocument

root.RemoveAttribute (fieldName);

Gracias ..

<?xml version="1.0" standalone="yes" ?> 
<Record1> 
    <Attribute1 Name="DataFieldName" Value="Pages" /> 
</Record1> 

Estoy intentando quitar atributo denominado "DataFieldName".

+0

¿Desea mostrar su XML? ¿Te importa mostrar tu código? –

Respuesta

10

No estoy seguro exactamente de lo que está tratando de hacer, así que aquí hay dos ejemplos.

Extracción del atributo:

var doc = new System.Xml.XmlDocument(); 
doc.Load("somefile.xml"); 
var root = doc.FirstChild; 

foreach (System.Xml.XmlNode child in root.ChildNodes) 
{ 
    if (child.Attributes["Name"] != null) 
     child.Attributes.Remove(child.Attributes["Name"]); 
} 

se establece el atributo en una cadena vacía:

var doc = new System.Xml.XmlDocument(); 
doc.Load("somefile.xml"); 
var root = doc.FirstChild; 

foreach (System.Xml.XmlNode child in root.ChildNodes) 
{ 
    if (child.Attributes["Name"] != null) 
     child.Attributes["Name"].Value = ""; 
} 

Editar: Puedo tratar de modificar mi código si elaborar en su solicitud original. Un documento XML solo puede tener un nodo raíz y el suyo parece ser record1. Entonces, ¿eso significa que su archivo completo solo contendrá un solo registro? ¿O significa tener algo así como

<?xml version="1.0" standalone="yes" ?> 
<Records> 
    <Record> 
     <Attribute Name="DataFieldName" Value="Pages" /> 
    </Record> 
    <Record> 
     <Attribute Name="DataFieldName" Value="Pages" /> 
    </Record> 
</Records> 
+0

gracias por el código. Funciona para el atributo. ¿Hay alguna manera de que pueda eliminar el nodo "Attribute1" si existe? – nav100

+0

Tengo solo un nodo hijo llamado Attribute1. Estoy tratando de eliminar si existe. – nav100

+0

Si solo tiene un nodo Attribute1 y está debajo del nodo principal, luego de crear un XmlDocument y cargar un archivo en él, simplemente llame a: doc.RemoveChild (doc.SelectSingleNode ("Attribute1")); –

1

uso youcan XmlNamedNodeMap.RemoveNamedItem Método (nombre) para hacerlo. Se puede usar para Atributos. Devolverá el XmlNode eliminado de este XmlNamedNodeMap o una referencia nula (Nothing en Visual Basic) si no se encuentra un nodo coincidente.

[C#] 
    using System; 
    using System.IO; 
    using System.Xml; 

    public class Sample 
    { 
    public static void Main() 
    { 
    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml("<book genre='novel' publicationdate='1997'> " + 
       " <title>Pride And Prejudice</title>" + 
       "</book>");  

    XmlAttributeCollection attrColl = doc.DocumentElement.Attributes; 

    // Remove the publicationdate attribute. 
    attrColl.RemoveNamedItem("publicationdate"); 

    Console.WriteLine("Display the modified XML..."); 
    Console.WriteLine(doc.OuterXml); 

    } 
    } 
Cuestiones relacionadas