【问题标题】:How to parse xml data when end element is having forward and backward slash当结束元素具有正斜杠和反斜杠时如何解析xml数据
【发布时间】:2013-05-20 10:43:37
【问题描述】:

我收到来自服务器的响应,就像

 <DataSet>\u000d\u000a
     <Table>\u000d\u000a
        <USER_NAME>Ganesh<\/USER_NAME>\u000d\u000a  
     <\/Table>\u000d\u000a
 <\/DataSet>"

如果我尝试使用 NSXmal Parser 委托方法来解析它,它会给出类似

的错误

localizedDescription 操作无法完成。 (NSXMLParserErrorDomain 错误 4。)

请帮助我。提前致谢。

【问题讨论】:

  • 解析前用/替换\/。
  • 那不是 xml。要在其上使用解析器,您必须使用字符串替换来修复它,或者更好地修复源
  • \u000d\u000a 呢?字符串替换是好方法吗?
  • &lt;USER_NAME&gt;Ganesh&lt;\/USER_NAME&gt;\u000d\u000a
  • 我个人认为你应该修复服务器而不是客户端解决方法,因为这不是 XML。

标签: iphone ios objective-c


【解决方案1】:

首先在工作意志XML的情况下,您需要遵循创建规则。因为您XML 的问题编号不正确,Tag 名称等存在。

如果有一些问题,那么另一个问题是,如果您在 String 中有 All XML,那么您可以使用该方法在两个 Strings 之间找到 NSString。或者换句话说,您可以使用这个找到tag 值。

-(NSString*)stringBetweenString:(NSString*)start andString:(NSString)end {
    NSRange startRange = [self rangeOfString:start];
    if (startRange.location != NSNotFound) {
        NSRange targetRange;
        targetRange.location = startRange.location + startRange.length;
        targetRange.length = [self length] - targetRange.location;   
        NSRange endRange = [self rangeOfString:end options:0 range:targetRange];
        if (endRange.location != NSNotFound) {
           targetRange.length = endRange.location - targetRange.location;
           return [self substringWithRange:targetRange];
        }
    }
    return nil;
}

【讨论】:

    【解决方案2】:

    用这个替换你的xml字符串

       NSString *html=xmlString;
    
       html = [html stringByReplacingOccurrencesOfString:[ NSString stringWithFormat:@"<\\"] withString:@"<"];
    

    【讨论】:

      【解决方案3】:

      这意味着来自服务器的响应编码错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-29
        • 2013-11-14
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 1970-01-01
        相关资源
        最近更新 更多