Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios NSXMLParser \n和\t位于文本内部_Ios_Objective C_Arrays_Xml_Nsxmlparser - Fatal编程技术网

Ios NSXMLParser \n和\t位于文本内部

Ios NSXMLParser \n和\t位于文本内部,ios,objective-c,arrays,xml,nsxmlparser,Ios,Objective C,Arrays,Xml,Nsxmlparser,我有以下XML体系结构: <resources> <string-array name="enl"> <item> </item> <item> </item> <item>"TextTextTextTextTextTextTextTextTextTextText. Text Text Textv Text Text Text

我有以下XML体系结构:

    <resources>
    <string-array name="enl">
            <item> </item>
            <item> </item>
            <item>"TextTextTextTextTextTextTextTextTextTextText.
Text Text Textv Text Text Text Text Text Text Text.
TextTextTextTextTextTextTextTextTextTextTextTextTextTextTextTextText.
TextTextTextTextTextTextTextTextTextTextText"</item>

我能做什么?

这是因为您误解了解析器处理字符输入的方式:在
didStartElement:
调用和
didEndElement:
调用之间,每个字符条目可以得到多个
foundCharacters:
回调。您的代码假定只有一个调用,因为您立即添加了对象:

[leftArray addObject:string];

您应该做的是设置一个可变字符串
buf
,并将
foundCharacters:
中的
string
参数的内容附加到该字符串中。对
addObject:
的调用只能发生在需要编写的
didEndElement:
方法中


您还需要执行一些最小的缓冲区管理:
didStartElement:
didEndElement:
调用应清除
buf
,以避免其他元素中不需要的字符与实际内容混在一起。

非常感谢您。。我以为我明白了,但似乎我完全弄错了,非常感谢,它就像一个符咒!
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    // currentElement = elementName ;
    //[elementName release];
    //elementName = nil;
//    if ( [elementName isEqualToString:@"eng"] ) {

        NSString *color = [attributeDict objectForKey:@"name"];
       // NSString *value = [attributeDict valueForKey:@"left"];

        if([color isEqualToString:@"enl"]){

            //NSLog(@"The data in the left pane is %@", value );
        Dir = @"left";

        }
        else if([color isEqualToString:@"enr"]){
            Dir = @"right";
        }
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    NSString *tagName = @"resources";

    if([tagName isEqualToString:@"resources"])
    {
        if([Dir isEqualToString:@"left"]){
            if(![string isEqualToString:@"\n"] && ![string isEqualToString:@"\n        "] && ![string isEqualToString:@"\""] && ![string isEqualToString:@"\n \""] && ![string isEqualToString:@"\n\t\t"] )
                [leftArray addObject:string];
            } else {
                if([Dir isEqualToString:@"right"]){
                    if(![string isEqualToString:@"\n"] && ![string isEqualToString:@"\n        "] && ![string isEqualToString:@"\""] && ![string isEqualToString:@"\n \""] && ![string isEqualToString:@"\n\t\t"] )
                        [rightArray addObject:string];
                    }
                }
            }
        }
[leftArray addObject:string];
[rightArray addObject:string];