Анализ SOAP-ответа iphone XMLReader - PullRequest
0 голосов
/ 29 июля 2011

У меня проблемы с выводом XMLReader, который должен иметь возможность анализировать любой SOAP-результат в NSDictionary.

Когда я просматриваю результаты, я получаю следующее:

Key: soapEnvelope, Value: { до конца xml-файла до конца, со всеми тегами, но, похоже, это длинная строка }

Что я здесь не так делаю, так как ожидал получить NSDictionary со всеми моими XML-тегами в качестве ключа?

Редактировать: Поскольку я работаю и пытаюсь понять это уже несколько дней, я могу быть совершенно не в том направлении, поэтому, если возможно ... вот мой XML:

 <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
    <GetData2Response xmlns="http://tempuri.org/">
        <GetData2Result>
            <NoOfObjectsDetected>1</NoOfObjectsDetected>
            <RectanglesForPicture>
                <Rectangle>
                    <Location>
                        <X>90</X>
                        <Y>14</Y>
                    </Location>
                    <Size>
                        <Width>352</Width>
                        <Height>352</Height>
                    </Size>
                    <X>90</X>
                    <Y>14</Y>
                    <Width>352</Width>
                    <Height>352</Height>
                </Rectangle>
            </RectanglesForPicture>
            <ReturnMessage>Juhu!</ReturnMessage>
        </GetData2Result>
    </GetData2Response>
</soap:Body>

Когда я хочу, чтобы Lets сказал NoOfObjectsDetected в int - что именно мне нужно делать? (Это глупо, я знаю ... но я потерян, atm ... thx)

Ответы [ 2 ]

0 голосов
/ 03 августа 2011

вы анализируете с помощью NSXMLParser ?? вот метод. создать изменяемый массив для хранения содержимого xml. в методах делегата сделайте следующее:

nsmutablearray noOfObjetcsArray; nsstring elementNameStr;

- (void) парсер: (NSXMLParser *) парсер didStartElement: (NSString *) elementName namespaceURI: (NSString *) namespaceURI qualName: (NSString *) Атрибуты qName: (NSDictionary *) atributeDict

{

if ([elementName isEqualToString: @ "NoOfObjectsDetected"])

{

noOfObjetcsArray = [nsmutablearray alloc] initwithcapacity: 0];

elementNameStr = elementName;

}

}

- (void) парсер: (NSXMLParser *) парсер найденХарактеры: (NSString *) строка

{

if ([elementNameStr isEqualToString: @ "NoOfObjectsDetected"])

{

 [noOfObjetcsArray addObject:string];

}

}


когда синтаксический анализ будет завершен, вы получите содержимое массива. поскольку вы хотите использовать его как значение типа int, везде, где вы используете это значение, дайте:

[[noOfObjetcsArray objectAtIndex: 0] intValue]

это преобразует строку в значение типа int. это способ, которым вы можете получить значение. попробуй.

всего наилучшего:)

}

0 голосов
/ 29 июля 2011
[self.elementsValues setObject:self.currentElementValue forKey:elementName];

Здесь elementsValues ​​является типом NSMutableDictionary. currentElementsValue - значение текущего тега. И elementName является текущим тегом. Свободно задавать вопросы, если это не ясно

...