【问题标题】:iphone XMLReader SOAP-Response parsingiphone XMLReader SOAP-Response 解析
【发布时间】:2011-10-15 19:40:25
【问题描述】:

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

当我查看结果时,我得到以下信息:

键:soapEnvelope,值:{xml 文件的其余部分到最后,带有所有标签,但它似乎是一个长字符串}

我在这里做错了什么,因为我希望得到一个以我所有的 XML-Tags 作为键的 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>

当我想让我们在 int 中说 NoOfObjectsDetected 时 - 我到底要做什么? (这很愚蠢,我知道……但我迷路了……谢谢)

【问题讨论】:

    标签: iphone soap xml-parsing xmlreader


    【解决方案1】:

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

    nsmutablearray noOfObjetcsArray; nsstring elementNameStr;

    -(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 属性:(NSDictionary *)atributeDict

    {

    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]

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

    一切顺利:)

    }

    【讨论】:

      【解决方案2】:
      [self.elementsValues setObject:self.currentElementValue forKey:elementName];
      

      这里的elementsValues 是NSMutableDictionary 的类型。 currentElementsValue 是当前标签的值。 elementName 是当前标签。如果不清楚,请随时提问

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-04
      • 1970-01-01
      • 2013-02-27
      • 2016-12-11
      • 1970-01-01
      相关资源
      最近更新 更多