2011-06-28 10 views
0

サービスからSOAP応答を受け取ったので、解析する必要があります。私は立ち往生している。この応答では、「Gzk0P」の値を底に向かって取得したいと考えています。 XMLの下の私の解析メソッドを見てください。ありがとう!SOAP応答を解析するNSXMLParser

<?xml version="1.0" encoding="UTF-8"?> 
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://mysvc.myservice.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns2="http://xml.apache.org/xml-soap" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> 
<SOAP-ENV:Body> 
<ns1:createSubmissionResponse> 
<return xsi:type="ns2:Map"> 
<item> 
<key xsi:type="xsd:string">error</key> 
<value xsi:type="xsd:string">OK</value> 
</item> 
<item> 
<key xsi:type="xsd:string">link</key> 
<value xsi:type="xsd:string">Gzk0P</value> 
</item> 
</return> 
</ns1:createSubmissionResponse> 
</SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 


- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict { 

    if ([elementName isEqualToString:@"key"]) { 

     NSString *title = [attributeDict valueForKey:@"value"]; 
     NSString *test = @""; 
    } 

} 

答えて

1

を働くことを願っています。タイプ=「のxsd:文字列」値=「Gzk0P」>リンクLT /キーGT

しかし、ここでの条件である帰属dictのは属性と同じタグに書き込まれた値は、この

LTキーのGT XSIを参照するときに使用されますが異なる場合、値はタグ内の別のタグであるため、値タグ内に到達する必要があり、foundCharactersメソッドでその値にアクセスできます。

コードあなたのXMLに関連する2つのものがあります。この

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 


     currentElementValue=string; 

    NSLog(@"Processing Value: %@", currentElementValue); 

} 
+0

この方法を使用しました。私はおそらく最もクリーンな方法でそれをやっていないが、私は '文字列'が 'リンク'と等しい場合、私は興味がある値が次に来ることを知っているときに 'currentElementValue == "リンク "をクリックして、私は、私は..とにかく5 char値に等しくなるようにcurrentElementValueを再度更新します。ありがとう! –

0

私はこの1つをテストしていないものの、この方法を試してみてください、私はあなたが値をフォーム帰属辞書にアクセスカントあなたは間違ってやっている、これは

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{ 

    key = nil; 
    [stringValue release]; 
    stringValue = nil; 
    if([elementName isEqualToString:@"item"]){ 
    if([elementName isEqualToString:@"value"]){ 
    key = @"value"; 
     return; 
    }} 
0

のようないくつかのこと。

  1. xmlは常に投稿と同じで、最後のタグの値に興味がありますか?
  2. もしそれが同じではないなら、あなたが興味を持つ価値は何ですか?

の場合1 - 値タグの最後に見つかった文字を解析し、出力として使用できます。

2 - あなたが解析したい値を特定できる方法を見つける必要があります。この場合、XMLを編集する必要があります。タグを変更するか、属性を追加する必要があります。

詳細情報が必要な場合は、コメントを記入してください。