读取字符串的Xml数组并将其加载到(字符串的)列表中

读取字符串的Xml数组并将其加载到(字符串的)列表中,xml,vb.net,xmlhttprequest,xml-serialization,Xml,Vb.net,Xmlhttprequest,Xml Serialization,我试图读取Xml数据并将其加载到字符串列表中。但我无法完成。下面是我的代码 将结果变暗为字符串=“” Dim soap As String=”“&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&123&vbCr&vbLf&“String”&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&vbLf&&vbCr&vbLf&& Dim req作为HttpWebRequest=DirectCast(WebRequest.Create(“http:

我试图读取Xml数据并将其加载到字符串列表中。但我无法完成。下面是我的代码

将结果变暗为字符串=“”

Dim soap As String=”“&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&123&vbCr&vbLf&“String”&vbCr&vbLf&&vbCr&vbLf&&vbCr&vbLf&&vbLf&&vbCr&vbLf&&
Dim req作为HttpWebRequest=DirectCast(WebRequest.Create(“http://localhost:59924/WebService.asmx/HelloWorld),HttpWebRequest)
请求标题。添加(“SOAPAction”和“http://tempuri.org/Register""")
req.ContentType=“text/xml;charset=”“utf-16”“”
req.Accept=“text/xml”
请求方法=“POST”
'req.ContentLength=标准长度
req.UserAgent=“Mozilla/5.0(Windows;U;Windows NT 5.1;en-US;rv:1.9.0.1)Gecko/2008070208 Firefox/3.0.1”
req.Accept=“text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8”
Dim requestWriter作为新的StreamWriter(req.GetRequestStream())
requestWriter.Close()
Dim responseReader作为新的StreamReader(req.GetResponse().GetResponseStream())
Dim responseData As String=responseReader.ReadToEnd()
Dim文件名为String=responseData
Dim doc作为新的XmlDocument()
doc.LoadXml(文件名)
将类别标注为新列表(字符串)()
Dim nList为XmlNodeList=doc.SelectNodes(“/ArrayOfString/string”)
将每个节点作为nList中的XmlNode
categories.Add(node.ToString())
下一个
我得到一个0计数的nList。 下面是我从web服务获得的xml数据

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
  <string>Test1</string>
  <string>Test2</string>
  <string>Test3</string>
  <string>Test4</string>
  <string>Test5</string>
  <string>Test7</string>
</ArrayOfString>

测试1
测试2
测试3
测试4
测试5
测试7

这是因为xml具有默认名称空间(
xmlns=”http://tempuri.org/“
),因此您需要在
XPath
查询中使用前缀,并使用
XmlNamespaceManager
定义前缀:

.....
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
namespaceManager.AddNamespace("d", "http://tempuri.org/")
Dim nList As XmlNodeList = doc.SelectNodes("/d:ArrayOfString/d:string", namespaceManager)
......
当XPath查询中未提供前缀时,它将被视为没有命名空间的元素。而在XML中,当文件声明了默认命名空间时,所有没有前缀的元素将被视为在默认命名空间[]中

.....
Dim namespaceManager As XmlNamespaceManager = New XmlNamespaceManager(doc.NameTable)
namespaceManager.AddNamespace("d", "http://tempuri.org/")
Dim nList As XmlNodeList = doc.SelectNodes("/d:ArrayOfString/d:string", namespaceManager)
......