我正在使用 HttpWebRequest.Create 方法调用 WebService 并使用 StreamReader 读取它,(以下方法执行此工作):
private string ReadWebMethod(string address)
{
var myRequest = (HttpWebRequest)HttpWebRequest.Create(address);
myRequest.Method = "POST";
using (var responseReader = new StreamReader(myRequest.GetResponse().GetResponseStream()))
return responseReader.ReadToEnd();
}
此方法效果很好,并输出如下字符串:
<ArrayOfAppObject xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<AppObject>
<Name>MyApp</Name>
<Image>StoreApp.png</Image>
<Version>SM2.1.0</Version>
</AppObject>
</ArrayOfAppObject>
现在我想看看这个字符串,所以我使用 XElemnet 并解析字符串。(下面的代码):
XElement x = XElement.Parse(ReadWebMethod(address));
现在,当我 foreach 时,x.Elements("AppObject"),它不返回任何项目并跳过 foreach。我的 foreach 是这样的:
foreach (var item in x.Elements("AppObject"))
{
listApplication.Add(new AppObject { Image = item.Element("Image").Value, Name = item.Element("Name").Value, Version = item.Element("Version").Value });
}
我创建了一个本地字符串并在“ArrayOfAppObject”(xmlns:xsi =“htt ...)之后删除属性(有些地方将其命名为xmlnamespace)并再次测试它,它也可以正常工作并且foreach不会跳过!
那么,如何使用带有命名空间的 xml?