2015-01-07 3 views
-1

Я пытаюсь получить значение из словаря, но оно дает мне null. На самом деле я разобрал XML, а затем преобразовать его в словарь Ниже приводится словарь после преобразования: (я получил его в журнале)Как получить значение из NsDictionary

dictionary: { 
    "soap:Envelope" =  { 
     "soap:Body" =   { 
      GetServerStatusResponse =    { 
       GetServerStatusResult =     { 
        text = "<NewDataSet>\n <Table1>\n <ServerStatus>Standby</ServerStatus>\n </Table1>\n</NewDataSet>"; 
       }; 
       xmlns = "http://tempuri.org/"; 
      }; 
     }; 
     "xmlns:soap" = "http://schemas.xmlsoap.org/soap/envelope/"; 
     "xmlns:xsd" = "http://www.w3.org/2001/XMLSchema"; 
     "xmlns:xsi" = "http://www.w3.org/2001/XMLSchema-instance"; 
    }; 
} 

теперь я хочу, чтобы принимать значение от ServerStatus тега. То есть в этом случае «StandBy». Но я получаю нулевое значение в ответ. Пожалуйста помоги? Есть проблема пространств?

+0

Как вы пытаетесь получить значение из NSDictionary? –

+0

Я использую библиотеку XmlDictionary и используя ее метод для получения значения и сохранения его в строке, (NSDictionary *) dictionaryWithXMLString: (NSString *) string. это метод этой библиотеки –

+0

Позвольте мне опубликовать ответ для вас. –

ответ

0

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

NSDictionary *soapEnvelope = [dictionary valueForKey:@"soap:Envelope"]; 
NSDictionary *soapBody  = [soapEnvelope valueForKey:@"soap:Body"]; 
NSDictionary *statusResponse = [soapBody valueForKey:@"GetServerStatusResponse"]; 
NSDictionary *statusResult = [statusResponse valueForKey:@"GetServerStatusResult"]; 

NSString *xmlString = [statusResult valueForKey:@"text"]; 
NSDictionary *textDictionary = [XMLDictionary dictionaryWithXMLString:xmlString]; 

Теперь xml в text ключа преобразуется в NSDictionary, и вы можете легко получить значение ServerStatus

+0

Спасибо Adeel Ur Rehman, он работает, но после копания двух строк больше NSDictionary * tableDict = [textDictionary valueForKey: @ "Table1"]; NSString * resultStr = [tableDict valueForKey: @ "ServerStatus"] –

+0

@nabeelaahmed принять ответ и проголосовать, если он решает вашу проблему :) Спасибо –

1

В вашем словаре нет ключа "ServerStatus". Единственный ключ "soap:Envelope"

и "soap:Body", "xmlns:soap", "xmlns:xsd" и "xmlns:xsi" ключи словаря, соответствующего ключу "soap:Envelope".

Вы не можете легко получить доступ к "ServerStatus", что вы можете сделать, присоединившись к text, а затем разобрать значение, связанное получить "ServerStatus"

Вы должны быть в состоянии получить значение в text таким образом:

[[[[[dictionary objectForKey:@"soap:Envelope"] objectForKey:@"soap:Body"] objectForKey:@"GetServerStatusResponse"] objectForKey:@"GetServerStatusResult"] objectForKey:@"text"]; 
+0

, пожалуйста, поделитесь со мной способом получить значение serverstatus –

+0

в этом случае «StandBy», я хочу получить это как вне, так что как это сделать @KIDdAe –

+0

и что вы подразумеваете под этим? «Вы не можете легко получить доступ к« ServerStatus », то, что вы можете сделать, это присоединиться к тексту, а затем проанализировать значение, связанное с получением« ServerStatus ». @KIDdAe –