我知道已经有一些关于这个主题的帖子,但我一直无法使用答案来弄清楚我需要什么。
我已经引用了以下帖子:Read Soap Message using C#
以下是我修改的SOAP响应(仅用于保护私人信息):
删除SOAP请求
以下是我尝试解析此XML的代码:
string file = ConfigurationManager.AppSettings["xmlSource"];
XmlReader reader;
reader = XmlReader.Create(file);
XmlReaderSettings settings = new XmlReaderSettings();
XmlDocument xd = new XmlDocument();
var nsmgr = new XmlNamespaceManager(xd.NameTable);
//nsmgr.AddNamespace("soap", "http://schemas.microsoft.com/sharepoint/soap/");
nsmgr.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope/");
nsmgr.AddNamespace("xs", "StAc_StuOnTrans");
nsmgr.AddNamespace("st", "http://tempuri.org/StAc_StuOnTrans.xsd");
xd.Load(file);
XmlNodeList xnList = xd.SelectNodes("//StAc_StuOnTrans", nsmgr);
int nodes = xnList.Count;
//xd.Load(reader); //soap message
XmlNode xn = xd.DocumentElement;
XmlNode c = xn.FirstChild;
XmlNode result = xn.SelectSingleNode("Student_OnTranscripts");
代码似乎正在接收节点结构,直到我到达最后一行,然后#34;结果"是解释为null。从我已经完成的阅读中可以看出我的命名空间错误,但无论我尝试添加到NameSpaceManager,它总是返回null。
任何人都可以帮助我吗?除了标准的.NET之外,有没有人对我可以使用的库有任何建议?
答案 0 :(得分:0)
所以我所做的是为我的项目添加一个服务引用,然后添加以下代码:
GlobalWeatherSoap request = new GlobalWeatherSoapClient("GlobalWeatherSoap");
string test = request.GetCitiesByCountry("Canada");
StringReader str = new StringReader(test);
DataSet ds = new DataSet();
ds.ReadXml(str);