2011-08-11 13 views
1

J'ai reçu la tâche d'appeler un service Web qui renvoie un flux de données XML, ce que je fais comme cela;System.Xml.Linq, espace de noms

For Each r As DataRow in SomeDataTable 
    Dim msFeed As String = string.format("http://some-feed.com?param={0}", r!SOME_VAL) 
    Dim x As XDocument = XDocument.Load(msFeed) 
Next 

Tout cela est bien, mais comme vous pouvez le voir x juste est écrasé à chaque itération. Ce dont j'ai besoin est de créer un xDocument et d'ajouter chaque flux de ma boucle, mais je ne sais pas comment procéder.

Merci

Solution

Dim xAllFeeds As XElement = New XElement("Feeds") 

For Each r As DataRow in SomeDataTable 
    Dim msFeed As String = string.format("http://some-feed.com?param={0}", r!SOME_VAL) 
    Dim x As XDocument = XDocument.Load(msFeed) 
    xAllFeeds.Add(x.Root) 
Next 

Répondre

1

pas 100% sûr de la syntaxe VB (C# est ma langue de choix), mais cela devrait être l'essentiel de ce que vous êtes après.

Dim xAllFeeds As XElement = New XElement("Feeds") 
For Each r As DataRow in SomeDataTable 
    Dim msFeed As String = string.format("http://some-feed.com?param={0}", r!SOME_VAL) 
    Dim xDoc As XDocument = XDocument.Load(msFeed) 
    xAllFeeds.Add(xDoc.Root) 
Next 
+0

Merci, plutôt que «appendChild je viens d'utiliser 'Ajouter' – Dooie

+1

Désolé, ce n'est pas' AppendChild', juste 'add' (http://msdn.microsoft.com/en-us/library/system .xml.linq.xelement.aspx). J'ai ajusté la réponse de façon appropriée. –