从返回字符串 XML、C# 的 asmx 服务中获取节点
本文关键字:服务 asmx 获取 节点 返回 字符串 XML | 更新日期: 2023-09-27 18:33:36
>我正在尝试查询返回以下 xml 的公共 Web 服务:
此 XML 文件似乎没有任何与之关联的样式信息。文档树如下所示。
<string xmlns="http://www.webserviceX.NET">
<NewDataSet> <Table> <Country>Maldives</Country> <City>Gan</City> </Table> <Table> <Country>Maldives</Country> <City>Male</City> </Table> </NewDataSet>
</string>
如何在 c# 中获取用于加载下拉列表的城市列表?
这是我的代码:
var restClient = new RestClient("http://www.webservicex.net/globalweather.asmx/GetCitiesByCountry");
var request = new RestRequest(Method.GET);
// request.Resource = "{version}/token";
request.AddParameter("CountryName", "Maldives");
var response = restClient.Execute(request);
//响应。内容包含麻烦的字符串
我将不胜感激你的帮助,谢谢。
看起来您的 XML 由包装在名为 "{http://www.webserviceX.NET}string"
的根元素中的DataSet.WriteXml(writer, XmlWriteMode.IgnoreSchema)
的输出组成。 因此,最简单的方法是将内部 XML 反序列化为DataSet
然后绑定相应DataTable
的相应列:
首先,反序列化集合:
var rootElement = XElement.Parse(xmlString); // xmlString is //response.Content
var set = new DataSet();
var setElement = rootElement.DescendantsAndSelf().Where(e => e.Name.LocalName == "NewDataSet").FirstOrDefault();
if (setElement != null)
{
using (var reader = setElement.CreateReader())
{
set.ReadXml(reader, XmlReadMode.Auto);
}
}
接下来,选择一个名为 "City"
的列的表:
var table = set.Tables.Cast<DataTable>().FirstOrDefault(t => t.Columns["City"] != null);
现在您已经有了DataTable
,您可以按照从数据库填充下拉列表的正确方法是什么?、下拉列表数据源和/或使用DataTextField = "City"
数据绑定下拉列表中的说明绑定它。