2

1 から 9 までの の連続したタグがimg id="#"あります。#

タグの説明は浮動小数点値で構成されます。

標準の NSXML パーサーを使用すると、すべての値を取得できません。

参照用の私のXML:

<img id="1">-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,

            -0.0370875,0.0862391,0.0970791,-0.0195908,

            -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,

             0.0253036,-0.0770325,0.14065,0.118424,0.1787,

             0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,

             0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,

             -0.0280366,0.106239,0.052094,0.110642,   

</img>

上記の XML をどのように解析しますか?

親切に、私を助けてください。

ありがとう

4

2 に答える 2

2

これはparser:foundCharacters:、一度にすべての文字を配信しないためです。parser:didStartElement:namespaceURI:qualifiedName:attributes:のコールバック間で取得した文字列とタグparser:didEndElement:namespaceURI:qualifiedName:で取得したすべての文字列を連結する必要があります。<img>

以下のコードでは、bufNSMutableStringパーサー デリゲートの ivar です。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
    if ([qualifiedName isEqualToString:@"img"]) {
        buf = [NSMutableString string];
    }
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([qualifiedName isEqualToString:@"img"]) {
        buf = [buf stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        NSLog(@"Got %@", buf);
    }
}

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [buf appendString:string];
}
于 2012-06-11T04:34:08.750 に答える
0

ついにそれを手に入れました...私はimgid='#'の開始タグと終了タグを配置しました。私の構造は次のようになります。

<images>

    <img id = '1'> -0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,

        -0.0370875,0.0862391,0.0970791,-0.0195908,

        -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,

         0.0253036,-0.0770325,0.14065,0.118424,0.1787,

         0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,

         0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,

         -0.0280366,0.106239,0.052094,0.110642, ....  

     </img>

     <img id = '2'> ... 

     </img>

   ....

   ....

</images>

<mapping>

  <map>
    <imgid> 1 </imgid>
    <keyword> heavy </keyword>

  </map>

  <map>
    <imgid> 2 </imgid>
    <keyword> metal </keyword>

  </map>

  ...

  ...

</mapping>

開始タグと終了タグを配置することで、xml全体を解析できました。

以前は、開始タグと終了タグは個々の画像用であり、1つの画像のみが解析されていました。

これにより、XMLの解析中に別の重要なポイントを追加しました。

これが他の人にも役立つことを願っています。

于 2012-06-12T04:34:39.053 に答える