2012-05-09 6 views
6

Sto lavorando su XmlElement in C#. Ho un XmlElement. La sorgente di XmlElement sarà simile all'esempio seguente.come ottenere i valori di un attributo di un elemento utilizzando XMlElement

Esempio:

<data> 
    <p>hello all 
     <strong> 
      <a id="ID1" href="#" name="ZZZ">Name</a> 
     </strong> 
    </p> 
    <a id="ID2" href="#" name="ABC">Address</a> 
</data> 

devo scorrere l'XML qui sopra per cercare nome dell'elemento a. Voglio anche estrarre l'ID di quell'elemento in una variabile.

Fondamentalmente voglio ottenere l'attributo ID dell'elemento <a>. Può verificarsi come elemento figlio o come genitore separato.

Qualcuno può aiutare come può essere fatto.

+0

forse la stessa domanda qui http://stackoverflow.com/questions/1216669/issue-to-get-specific-xml-element-value-using-c-sharp – chanhle

+1

Stai analizzando un vero XML o HTML? Cosa hai provato fino ad ora? – SimonC

+0

Sto analizzando il vero XML – Patan

risposta

4

Dal momento che si sta utilizzando C# 4.0 è possibile utilizzare LINQ to XML in questo modo:

XDocument xdoc = XDocument.Load(@"C:\Tmp\your-xml-file.xml"); 
foreach (var item in xdoc.Descendants("a")) 
{ 
    Console.WriteLine(item.Attribute("id").Value); 
} 

dovrebbe darvi l'elemento a indipendentemente da dove si trova nella gerarchia.


Dal tuo commento, per il codice che utilizza solo le classi XmlDocument e XmlElement il codice equivalente sarebbe:

XmlDocument dd = new XmlDocument(); 
dd.Load(@"C:\Tmp\test.xml"); 
XmlElement theElem = ((XmlElement)dd.GetElementsByTagName("data")[0]); 
//   ^^ this is your target element 
foreach (XmlElement item in theElem.GetElementsByTagName("a"))//get the <a> 
{ 
    Console.WriteLine(item.Attributes["id"].Value);//get their attributes 
} 
+0

vuota supporterà solo l'oggetto XmlElement. Puoi modificare la tua risposta di conseguenza. – Patan

+0

@ User222 Ho aggiornato la mia risposta. – gideon

+0

grazie per la risposta – Patan

Problemi correlati