2017-05-16 1 views
0

Im faisant un formulaire en ligne dans vb.net je consomme un webservice, qui me revient à tous les paysConsuming données de webservice avec vb.net

seulement ont 1 bouton Enviar qui appelle les pays.

Imports service_country = WebServiceVB2.country 

Protected Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 

     Dim serv_country As New service_country.country '--Create object' 
     Dim MyDoc As New System.Xml.XmlDocument 
     Dim MyXml As String = serv_country.GetCountries() '--Execute procedure from webservice' 

     MyDoc.LoadXml(MyXml) '--Read Myxml and convert to XML' 
     Dim SymbolText As String = MyDoc.SelectSingleNode("//NewDataSet/Table/Name").InnerText '--select the node' 
     Label1.Text = SymbolText 

    End Sub 

Ma question est Comment puis-je sélectionner toutes les valeurs qui sont à l'intérieur du « nom ». En fait, il n'en montre qu'un. Par exemple:

introducir la descripción de la imagen aquí

Merci à l'avance.

+0

Quelque chose comme 'Dim oNode1 Comme Xml.XmlNodeList = MyDoc.SelectNodes ("// NewDataSet/Table/Nom") ' – Hackerman

Répondre

1

C'était un problème intéressant. Comme les données proviennent d'une page Web, la parenthèse ouverte s'affichait sous la forme "& l t;" tandis que la parenthèse fermante venait comme "& g t;". Donc, ceux-ci ont dû être remplacés. Je LINQ xml pour obtenir les noms:

Imports System.Xml 
Imports System.Xml.Linq 

Module Module1 
    Const URL As String = "http://www.webservicex.net/country.asmx/GetCountries" 
    Sub Main() 
     Dim doc1 As XDocument = XDocument.Load(URL) 

     Dim docStr As String = doc1.ToString() 
     docStr = docStr.Replace(">", ">") 
     docStr = docStr.Replace("&lt;", "<") 

     Dim doc2 As XDocument = XDocument.Parse(docStr) 

     Dim root As XElement = doc2.Root 
     Dim defaultNs As XNamespace = root.GetDefaultNamespace() 
     Dim names() As String = doc2.Descendants(defaultNs + "Name").Select(Function(x) CType(x, String)).ToArray() 
    End Sub 
End Module 

En utilisant WebUtility

Imports System.Xml 
Imports System.Xml.Linq 
Imports System.Text 
Imports System.Net 


Module Module1 
    Const URL As String = "http://www.webservicex.net/country.asmx/GetCountries" 
    Sub Main() 

     Dim xReader As XmlReader = XmlTextReader.Create(URL) 
     xReader.MoveToContent() 
     Dim doc As XDocument = XDocument.Parse(WebUtility.HtmlDecode("<?xml version=""1.0"" encoding=""iso-8859-9"" ?>" & xReader.ReadOuterXml)) 

     Dim root As XElement = doc.Root 
     Dim defaultNs As XNamespace = root.GetDefaultNamespace() 
     Dim names() As String = doc.Descendants(defaultNs + "Name").Select(Function(x) CType(x, String)).ToArray() 
    End Sub 
End Module 
+0

Merci, je viens d'ajouter' For Each' pour lire le contenu. C'était très utile. – cport93