Se si carica l'XML in un XmlDocument
, esistono diversi modi per ottenere il valore dell'attributo. Si potrebbe usare XPath per trovare l'attributo:
XmlAttribute a = doc.SelectSingleNode("/reply/@success");
Console.Write(a.Value);
Se hai già la XmlElement
che appare l'attributo su (che in questo caso è l'elemento del documento), allora si può solo utilizzare GetAttribute
:
Console.Write(doc.DocumentElement.GetAttribute("success"));
Esistono approcci simili se si utilizza XPathDocument
o XmlReader
o XDocument
.
In tutti i casi, tuttavia, si desidera ottenere l'attributo tramite il suo nome , non la sua posizione. Nel tuo caso di test c'è un solo attributo; in qualsiasi applicazione del mondo reale sono possibili più attributi e l'ordinamento degli attributi in XML non è significativo. Questi due elementi sono semanticamente equivalenti:
<a foo='true' bar='false'/>
<a bar='false' foo='true'/>
Tu non sai nemmeno che il parser XML presenterà gli attributi a voi nello stesso ordine in cui appaiono nel documento; a seconda dell'implementazione, il parser può darli in ordine alfabetico o in ordine casuale. (Ho visto entrambi.)
fonte
2010-09-22 17:37:48
Il solutone deve utilizzare 'XmlDocument' o qualsiasi altra API di elaborazione XML specifca? –
@Daniel: prima ancora di andare lì: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/1732454#1732454 ;-) –
@ Isak: Non avevo intenzione di seguire la rotta RegEx! La domanda parla di un "documento XML" che suggerisce l'utilizzo di un'API DOM (ad esempio 'XmlDocument'), ma mi chiedevo se fosse necessario o se un'API stream/SAX come' XmlReader' fosse accettabile. –