将SOAP响应解析为DataSet

时间:2016-04-18 16:08:20

标签: c# soap

我知道已经有一些关于这个主题的帖子,但我一直无法使用答案来弄清楚我需要什么。

我已经引用了以下帖子: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之外,有没有人对我可以使用的库有任何建议?

1 个答案:

答案 0 :(得分:0)

所以我所做的是为我的项目添加一个服务引用,然后添加以下代码:

 GlobalWeatherSoap request = new GlobalWeatherSoapClient("GlobalWeatherSoap");

        string test = request.GetCitiesByCountry("Canada");

        StringReader str = new StringReader(test);
        DataSet ds = new DataSet();
        ds.ReadXml(str);