Come usare LINQ to XML con spazi dei nomi, in C #

September 1



Tutto sommato, LINQ (Language Integrated Query) è piuttosto comodo. Si può facilmente recuperare i dati da collezioni, XML e database con tutto il costruito in strumenti. Personalmente, lo trovo il più risparmio di tempo per l'XML da REST API. Per l'alimentazione di ricerca l'esempio di Twitter.

istruzione

1 Scegliere alcuni XML che ha uno spazio dei nomi. Per questo esempio userò ricerca API di Twitter con la query "qualunque". Questo è finita codice semplificato per afferrare l'XML dal feed. Dal momento che, questo articolo è circa LINQ e non l'acquisizione di XML, ho lasciato questo per essere molto semplice, buggy in quanto non gestisce gli errori (risposta o altro), e utilizza la WebClient che io normalmente non utilizzare al di fuori di esempi .

Questo codice scarica semplicemente la risposta del URL come una stringa e imposta "xml" per il valore.

Esempio di codice:

stringa XML;
utilizzando (var web = new WebClient ())

xml = web.DownloadString("http://search.twitter.com/search.atom?q=whatever");

2 Scrivi il tuo LINQ con lo spazio dei nomi. Creo l'oggetto XNamespace con essa la propria stenografia di appena assegnare il nome del namespace sotto forma di stringa. In questo caso, è lo standard Atom ingresso "http://www.w3.org/2005/Atom&quot ;. Quando si utilizza questo spazio dei nomi su elementi, è sufficiente aggiungere il variabile XNamespace alla stringa del nome dell'elemento. IE ns +" " , per selezionare gli elementi di ingresso nello spazio dei nomi assegnati ai XNamespace "ns" variabile.

Questo codice assegna la variabile XNamespace "ns" allo spazio dei nomi Atom, quindi utilizza LINQ sul discendenti del XDocument denominati "ingresso" nel namespace definito in precedenza.

Esempio di codice:

XNamespace ns = "http://www.w3.org/2005/Atom&quot ;;
var = discendenti da I a XDocument.Parse (XML) .Descendants (NS + "voce")

select i;

3 Applicare alla vostra situazione. Gioca con il codice per trovare i nodi da selezionare fuori, aggiungere il punto in cui, se necessario, e, soprattutto, divertirsi (o almeno fare soldi).

esempio di codice completo:

stringa XML;
utilizzando (var web = new WebClient ())

xml = web.DownloadString("http://search.twitter.com/search.atom?q=whatever");

XNamespace ns = "http://www.w3.org/2005/Atom&quot ;;
var = discendenti da I a XDocument.Parse (XML) .Descendants (NS + "voce")

select i;

Consigli e avvertenze

  • giocare sempre.