2015-10-20 6 views
-5

Привет, У меня есть данные xml, возвращенные с другой службы. Это выглядит так:Перемещение узлов xml;

<?xml version="1.0" encoding="UTF-8"?> 
<response xmlns="http://test.com/group/application" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Response> 
<Response> 
<ReturnCode>0</ReturnCode> 
<Message>Sucess</Message> 
<Data>PRINT 'This is a test #2'</Data> 
</Response> 
</Response> 
</response> 

Мне нужно значение Data, Message и ReturnCode. Значение внутри данных (PRINT «Это тест # 2») узла может быть ни одной строки или тысячи строк ..

Я использую этот C# код, чтобы получить значения

XmlDocument хт = новый XmlDocument();

 string Response = obj.getContent(str, 1, 73810, SHA); 



     //Console.WriteLine("Response" + Response); 
     xm.LoadXml(Response); 



     Console.WriteLine(xm.InnerXml); 

     XmlNode oldCd; 
     XmlElement root = xm.DocumentElement; 
     Console.WriteLine(root.InnerText); 
     oldCd = root.SelectSingleNode("/response/Response/Response/ReturnCode/Message/Data/"); 

static void Main() 
    { 
     try 
     { 

      svc obj = new svc(); 
      .. 
      //XmlDocument xm = new XmlDocument(); 

      string rsp = obj.getContent(..; 


      String myEncodedString; 
      myEncodedString = obj.XmlDecode(rsp); 

      XNamespace xmlns = XNamespace.Get("http://xxxx.com/xxx/xx"); 

      XDocument doc = XDocument.Parse(myEncodedString); 

      Console.WriteLine(obj.Return_Message_Data("ReturnCode", myEncodedString)); 

      Console.WriteLine(obj.Return_Message_Data("Message", myEncodedString)); 

      Console.WriteLine(obj.Return_Message_Data("Data", myEncodedString));    

      Console.ReadLine(); 
     } 

     catch (Exception e) 
     { 
      Console.WriteLine(e); 
      Console.ReadLine(); 
     } 

    } 
+4

Вы бы лучше начать кодирование тогда! –

+0

Да, я получаю доступ к этому из приложения C#. Я: XmlDocument xm = new XmlDocument(); строка Rsp = obj.getContent (str, 1, 73810, SHA); xm.LoadXml (Rsp); Console.WriteLine (xm.InnerXml); XmlNode oldCd; XmlElement root = xm.DocumentElement; Console.WriteLine (root.InnerText); oldCd = root.SelectSingleNode ("/ response/Response/Response/ReturnCode/Message/Data /"); Но я не вижу никакого значения в столбце данных. Спасибо – jramacha

+3

Вам нужно задать конкретный вопрос. Это похоже на то, что вы хотите целое решение. – leigero

ответ

0

Попробуйте

XmlDocument xml = new XmlDocument(); 
xml.LoadXml(myXmlString); //myXmlString is the xml file in string //copying xml to string: string myXmlString = xmldoc.OuterXml.ToString(); 
XmlNodeList xnList = xml.SelectNodes("/responset[@*]/Response"); 
foreach (XmlNode xn in xnList) 
{ 
XmlNode response = xn.SelectSingleNode("Response"); 
if (response != null) 
{ 
string rc = response["ReturnCode"].InnerText; 
string msg = example["Message"].InnerText; 
string data = example["Data"].InnerText; 
} 
} 
+0

Это не сработало – jramacha

Смежные вопросы