首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 判斷 NSData 是否包含特定 XML 頭字符串的高效方法

     編輯:程式設計綜合問答

場景

從網絡獲取 NSData,需快速判斷其是否為 XML 文檔(即以 <?xml version="1.0"?> 開頭)。

推薦做法:轉字符串後判斷前綴

NSData *data = [NSData dataWithContentsOfURL:url];
NSString *xmlString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
BOOL hasXMLTag = [xmlString hasPrefix:@"<?xml version=\"1.0\"?>"]; // 或 @"<?xml"

if (hasXMLTag) {
    // 進一步解析 XML...
}

性能與編碼提示

  • initWithData:encoding: 會完整解碼,若數據極大(>10MB)可考慮僅讀取前 100 字節判斷,避免全量解碼開銷。
  • 常見編碼除 UTF-8 外還有 GBK、UTF-16,若來源不可控,可嘗試 NSXMLParser 直接解析 NSData,解析器內部會自動檢測編碼聲明。

替代方案:NSXMLParser 事件回調

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse]; // delegate 的 parserDidStartDocument: 即確認為 XML

此法更健壯,且可同步完成解析,一舉兩得。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved