85 Stimmen

XML-Attribute mit XmlDocument lesen

Wie kann ich ein XML-Attribut mit XmlDocument von C# lesen?

Ich habe eine XML-Datei, die in etwa wie folgt aussieht:

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

Wie würde ich die XML-Attribute SuperNumber und SuperString lesen?

Derzeit verwende ich XmlDocument, und ich bekomme die Werte zwischen mit XmlDocument's GetElementsByTagName() und das funktioniert wirklich gut. Ich kann nur nicht herausfinden, wie ich die Attribute bekomme?

1voto

Colonel Panic Punkte 125419

Angenommen, Ihr Beispieldokument befindet sich in der String-Variablen doc

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

1voto

Voicu Punkte 14948

Wenn Ihr XML Namespaces enthält, können Sie wie folgt vorgehen, um den Wert eines Attributs zu erhalten:

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);
}

Mehr über XML-Namespaces aquí y aquí .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X