iphone XMLReader SOAP-Response解析

时间:2011-07-29 09:38:43

标签: iphone soap xml-parsing xmlreader

我对XMLReader的输出有疑问,它应该能够将任何SOAP-Result解析为NSDictionary。

当我完成结果时,我得到以下内容:

密钥:soapEnvelope,值:{ xml文件的其余部分到底,包含所有标记,但它似乎是一个长字符串}

我在这里做错了什么,因为我希望得到一个包含所有XML标签的NSDictionary作为密钥?

编辑:因为我工作并且试图理解这几天,我可能完全走错了方向,所以如果可能的话......这是我的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在一个int中说NoOfObjectsDetected时 - 我到底要做什么? (这很愚蠢,我知道......但我失去了... ... thx)

2 个答案:

答案 0 :(得分:0)

[self.elementsValues setObject:self.currentElementValue forKey:elementName];

这里elementsValues是NSMutableDictionary的类型。 currentElementsValue是当前标记的值。而elementName是当前标签。如果不清楚,可以自由提问

答案 1 :(得分:0)

你是在NSXMLParser的帮助下解析的?这是方法。创建一个可变数组来存储xml的内容。在委托方法中执行以下操作:

nsmutablearray noOfObjetcsArray; nsstring elementNameStr;

- (void)parser:(NSXMLParser *)解析器didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)atributeDict

{

if([elementName isEqualToString:@“NoOfObjectsDetected”])

{

noOfObjetcsArray = [nsmutablearray alloc] initwithcapacity:0];

elementNameStr = elementName;

}

}

- (void)解析器:(NSXMLParser *)解析器foundCharacters:(NSString *)string

{

if([elementNameStr isEqualToString:@“NoOfObjectsDetected”])

{

 [noOfObjetcsArray addObject:string];

}

}


解析完成后,您将获得数组中的内容。因为你想把它作为一个int值,无论你在哪里使用这个值,jus都给:

[[noOfObjetcsArray objectAtIndex:0] intValue]

这会将字符串转换为int值。这就是你可以获得价值的方式。试试吧。

一切顺利:)

}