我在XMLReader的输出方面遇到了问题,它应该能够将任何SOAP-Result解析为NSDictionary。
当我浏览结果时,我得到以下内容:
关键字:soapEnvelope,值:{其余的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>
当我想让NoOfObjectsDetected在一个int -我到底要做什么?(这很愚蠢,我知道……但是我迷路了……thx)
是否使用NSXMLParser进行解析??方法如下。创建一个可变数组来存储xml的内容。在委托方法中执行以下操作:
nsmutablearray noOfObjetcsArray;nsstring elementNameStr;
-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURIqualifiedName:(NSString *)qName attributes:(NSDictionary *) attributedict
{
if ([elementName isEqualToString:@"NoOfObjectsDetected"])
{
noOfObjetcsArray =[nsmutablearray alloc] initwithcapacity:0];
elementNameStr = elementName;
}
}
-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
if ([elementNameStr isEqualToString:@"NoOfObjectsDetected"])
{
[noOfObjetcsArray addObject:string];
}
}
解析完成后,
将获得数组中的内容。因为你想把它作为一个int值,所以无论你在哪里使用这个值,只要给出:
[[noOfObjetcsArray objectAtIndex:0] intValue]
this将把字符串转换为整型值。这就是得到值的方法。试试。
祝一切顺利:)
}
[self.elementsValues setObject:self.currentElementValue forKey:elementName];
这里elementsValues是NSMutableDictionary的类型。currentElementsValue是当前标签的值。elementName是当前标签。如果不清楚,可以自由提问