valor obtener nodo modificar leer especifico crear atributos atributo archivo c# .net xml xmldocument

c# - obtener - Leer el atributo XML usando XmlDocument



obtener valor de un atributo xml c# (7)

¿Cómo puedo leer un atributo XML usando XmlDocument de C #?

Tengo un archivo XML que se parece a esto:

<?xml version="1.0" encoding="utf-8" ?> <MyConfiguration xmlns="http://tempuri.org/myOwnSchema.xsd" SuperNumber="1" SuperString="whipcream"> <Other stuff /> </MyConfiguration>

¿Cómo leería los atributos XML SuperNumber y SuperString?

Actualmente estoy usando XmlDocument, y obtengo los valores intermedios usando XmlDocument''s GetElementsByTagName() y eso funciona muy bien. Simplemente no puedo entender cómo obtener los atributos.


Deberías mirar en XPath . Una vez que empiece a usarlo, verá que es mucho más eficiente y fácil de codificar que iterar a través de las listas. También le permite obtener directamente las cosas que desea.

Entonces el código sería algo similar a

string attrVal = doc.SelectSingleNode("/MyConfiguration/@SuperNumber").Value;

Tenga en cuenta que XPath 3.0 se convirtió en una Recomendación W3C el 8 de abril de 2014.


Puede migrar a XDocument en lugar de XmlDocument y luego usar Linq si prefiere esa sintaxis. Algo como:

var q = (from myConfig in xDoc.Elements("MyConfiguration") select myConfig.Attribute("SuperString").Value) .First();


Si su XML contiene espacios de nombres, puede hacer lo siguiente para obtener el valor de un atributo:

var xmlDoc = new XmlDocument(); // content is your XML as string xmlDoc.LoadXml(content); XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); // make sure the namespace identifier, URN in this case, matches what you have in your XML nsmgr.AddNamespace("ns", "urn:oasis:names:tc:SAML:2.0:protocol"); // get the value of Destination attribute from within the Response node with a prefix who''s identifier is "urn:oasis:names:tc:SAML:2.0:protocol" using XPath var str = xmlDoc.SelectSingleNode("/ns:Response/@Destination", nsmgr); if (str != null) { Console.WriteLine(str.Value); }

Más sobre espacios de nombres XML here y here .


Suponiendo que su documento de ejemplo está en la variable de cadena doc

> XDocument.Parse(doc).Root.Attribute("SuperNumber") 1


Tengo un Xml File books.xml

<ParameterDBConfig> <ID Definition="1" /> </ParameterDBConfig>

Programa:

XmlDocument doc = new XmlDocument(); doc.Load("D:/siva/books.xml"); XmlNodeList elemList = doc.GetElementsByTagName("ID"); for (int i = 0; i < elemList.Count; i++) { string attrVal = elemList[i].Attributes["Definition"].Value; }

Ahora, attrVal tiene el valor de ID .


XmlDocument.Attributes quizás? (Que tiene un método GetNamedItem que presumiblemente hará lo que quieras, aunque siempre he iterado la colección de atributos)


XmlNodeList elemList = doc.GetElementsByTagName(...); for (int i = 0; i < elemList.Count; i++) { string attrVal = elemList[i].Attributes["SuperString"].Value; }