Разобрать ответ XML Data
Мне нужна помощь, чтобы разобрать ответ данных. Когда я отправляю параметр в веб-службу, веб-служба выдаст данные в ответ. Я использую wsdl2objc
for( ; cur != NULL ; cur = cur->next) {
if(cur->type == XML_ELEMENT_NODE) {
if(xmlStrEqual(cur->name, (const xmlChar *) "Body")) {
NSMutableArray *responseBodyParts = [NSMutableArray array];
xmlNodePtr bodyNode;
for(bodyNode=cur->children ; bodyNode != NULL ; bodyNode = bodyNode->next) {
if(cur->type == XML_ELEMENT_NODE) {
if(xmlStrEqual(bodyNode->name, (const xmlChar *) "selectDataReturn")) {
NSString *bodyObject = [NSString deserializeNode:bodyNode];
if (bodyObject != nil) [responseBodyParts addObject:bodyObject];
}
if (xmlStrEqual(bodyNode->ns->prefix, cur->ns->prefix) &&
xmlStrEqual(bodyNode->name, (const xmlChar *) "Fault")) {
SOAPFault *bodyObject = [SOAPFault deserializeNode:bodyNode];
if (bodyObject != nil) [responseBodyParts addObject:bodyObject];
}
}
}
response.bodyParts = responseBodyParts;
//bodyParts is my data.
}
}
}
Но мой ответ bodyParts мне:
<?xml version='1.0' encoding='UTF-8'?><EISDataRS><EISDataRecord><RECSEQ>1</RECSEQ><INPUT_DATE>201201</INPUT_DATE><PREFIX_BU>AAA</PREFIX_BU><INDEX_LEVEL>10000</INDEX_LEVEL><CF>83.94</CF></EISDataRecord><EISDataRecord><RECSEQ>2</RECSEQ><INPUT_DATE>201201</INPUT_DATE><PREFIX_BU>AAA</PREFIX_BU><INDEX_LEVEL>20100</INDEX_LEVEL><CF>73.94</CF></EISDataRecord><EISDataRecord><RECSEQ>1</RECSEQ><INPUT_DATE>201201</INPUT_DATE><PREFIX_BU>AAA</PREFIX_BU><INDEX_LEVEL>22100</INDEX_LEVEL><CF>57.44</CF></EISDataRecord></EISDataRS>
Как я могу разобрать данные в wsdl2objc или как я должен разобрать на resp.bodyParts в контроллере представления Мне просто нужны только текстовые данные Пожалуйста, советуйте. Благодарю.
2 ответа
Если вы хотите проанализировать данные XML, загляните в XMLDictionary.
Это простая структура, которая легко разбирает ваши данные в аккуратную и упорядоченную иерархию NSDictionaries и NSArrays.
У меня была та же проблема, и я исправил ее, проанализировав правильное имя тела.
В своем коде попробуйте заменить "selectDataReturn" на "EISDataRS". Потому что из твоего ответа я вижу, что EISDataRS - твой ребенок.