2016-04-18 3 views
0

Я знаю, что на эту тему уже есть несколько сообщений, но я не смог использовать ответы, чтобы выяснить, что мне нужно.Анализ SOAP-ответа в DataSet

Я ссылка следующего сообщения: Read Soap Message using C#

Ниже мой модифицированном ответ SOAP (только для защиты частной информации):

REMOVED SOAP REQUEST

Ниже приведен код, который я ', используя, чтобы попытаться разобрать этот 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"); 

Код, кажется, подбирает структуру узла до тех пор, пока Я добираюсь до последней строки, в которой «результат» интерпретируется как нуль. Из чтения, которое я сделал, это звучит так, как будто у меня неправильное пространство имен, но независимо от того, что я пытаюсь добавить в NameSpaceManager, он всегда возвращается как null.

Может ли кто-нибудь помочь мне здесь? Кто-нибудь есть рекомендации по библиотекам, которые я могу использовать, кроме стандартных .NET?

+0

Вам не нужно разобрать SOAP. Структура сделает это для вас. Просто используйте один и тот же тип данных с обеих сторон. –

+0

Thaks @ matt-dot-net. Можете ли вы предоставить более подробную информацию? Итак, если я использую пример ответа SOAP на данный момент, какие объекты/методы в структуре я должен назвать? – kickinchicken

+1

ОК ... прошло некоторое время с тех пор, как я это сделал. Я добавил ссылку на проект к проекту. Теперь мне просто нужно вызвать веб-службу из кода. – kickinchicken

ответ

0

Так что я сделал добавить ссылку на службу к моему проекту, а затем добавил следующий код:

GlobalWeatherSoap request = new GlobalWeatherSoapClient("GlobalWeatherSoap"); 

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

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