【问题标题】:XML Parsing in iPhone not getting any responseiPhone中的XML解析没有得到任何响应
【发布时间】:2012-09-25 07:20:05
【问题描述】:

我需要从 WCF 服务调用 XML 文件并在 iPhone 中解析 XML 的内容。我可以调用服务 URL,但是在使用 NSXMLParser 进行解析时,我无法在 XML 中获得特定的属性值。我在 XCode 中使用 ViewController 应用程序。

我的 XML 文件是这样的:

<GetCompanyResponse xmlns="http://schemas.datacontract.org/2004/07/DomainModel" 
 xmlns:i="http://www.w3.org/2001/XMLSchema-    
 <CompanyList>
    <Company>
      <Id>b9ca2e32-ce88-4d72-99ce-9bc592511e85</Id>
    </Company>
 </CompanyList>




   NSString *urlString = [NSString stringWithFormat:@"http://192.168.0.107:8732/Design_Time_Addresses/IServices/

        AppointmentService/json/GetCompany";
        NSURL *jsonUrl =[NSURL URLWithString:urlString];
        NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:jsonUrl];
        [parser setDelegate:self];
        [parser setShouldProcessNamespaces:NO];
        [parser setShouldReportNamespacePrefixes:NO];
        [parser setShouldResolveExternalEntities:NO];

        [parser parse];
        [parser release];  

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

           if ([elementName isEqualToString:@"Company"]) {
            NSString *name=[attributeDict objectForKey:@"Id"];

        }
        }

但是当我检查 'name' 中的值时,它返回 nil。我不知道怎么了。我应该改变什么?如何获取 ID 属性的值?

任何帮助将不胜感激。提前致谢。

【问题讨论】:

    标签: iphone xml-parsing nsxmlparser


    【解决方案1】:

    id 不是名称的属性。将代码放入 didEndElement: 在.h中定义strVal NSString;

    Inside found character:
    {
       strVal=string;
    }
    
    Inside parserDidEndElement method:
         {
    
           if ([elementName isEqualToString:@"Id"]) {
            NSString *name=strVal;
    
        }
        }
    

    这对你有用。

    【讨论】:

    • 嘿,VXtreme 仍然为 Id 返回 nil 值。我写了这个:parser didStartElement{if ([elementName isEqualToString:@"Id"]) { NSString *name=[attributeDict objectForKey:@" ID”]; }parser foundCharacters:{ strVal=string; } parser didEndElement{if ([elementName isEqualToString:@"Id"]) { NSString *name=strVal;} 仍然返回 nil 值..你能告诉我我哪里出错了吗?
    • 首先你不必在 didStartElement 中写任何东西。其次你在 .h 文件中定义了 strVal 吗?检查日志里面找到的字符 .Print value after NSString *name=strVal;声明,看看你有什么收获吗?
    • 是的,我已经在 .h 文件中定义了 strVal。我已经删除了 didStartElement 中的代码。即使我无法获得。如果我看到控制台区域,则 name 的值是通过签入输出区域为:打印名称描述:(gdb)
    • 其实Id是GUID数据类型;那我应该怎么消费呢?
    • 作为字符串格式的所有xml你也会得到字符串格式的Id
    猜你喜欢
    • 2013-12-22
    • 2018-06-18
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-15
    • 2023-01-19
    • 2019-09-02
    相关资源
    最近更新 更多