2011-07-11 140 views
0

我使用GDataXMLNode解析XML文件。我的问题是,当我分析在iphone中解析XML

<TRUSTEDVINFLAG>&#x0;</TRUSTEDVINFLAG> 

结果是

Entity: line 102406: parser error : xmlParseCharRef: invalid xmlChar value 0

这里是我的代码:

+ (NSString *)dataFilePath:(BOOL)forSave { 

    NSString *documentsDirectory = @"/Users/mediatun1/Desktop/XMLTest"; 
    NSString *documentsPath = [documentsDirectory stringByAppendingPathComponent:@"IAAT.xml"]; 
    if (forSave || [[NSFileManager defaultManager] fileExistsAtPath:documentsPath]) { 
     return documentsPath; 
    } else { 
     return [[NSBundle mainBundle] pathForResource:@"IAAT" ofType:@"xml"]; 
    } 

} 

+ (ME2Archive *)loadParty { 

    NSString *filePath = [self dataFilePath:FALSE]; 
    NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:filePath]; 
    NSError *error; 


    GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error]; 
    if (doc == nil) { return nil; } 
} 

回答

0

随着错误消息指出,字符&#x0;未在有效XML文档。因此,创建XML文档时可能会出错,这可能与编码问题有关。尝试使用UTF-8或检查文档来源中的虚假信息。

实施例中,如果文档的页眉说

<?xml version="1.0" encoding="utf-8" ?> 

这是一个示例代码读取文件

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"xml"]; 
NSData *myData = [NSData dataWithContentsOfFile:filePath]; 

// this is the important part, I'm reading the nsdata as UTF-8 
NSString *xml = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; 
+0

我不使用编码 – user838741

+0

你的文件的内容是无关紧要的,因为我们已经知道,它有一个错误的字符不应该出现在所有。发布你如何创建它的细节,或者文档来自哪里可能会有所帮助。例如:你是否使用NSURLConnection读取它,是否是来自磁盘的文件?,你使用的是什么代码? – Jano

+0

我bilive,我可以使用功能在客观上解决问题 – user838741

0

您可以代替使用的NSXMLParser或TBXML。你可以预先格式化标签的值吗?或者您有义务使用您收到的内容?

+0

是的,有义务使用什么接口 – user838741

+0

在这种情况下,假设GDataXMLNode无法处理该值,会尝试不同的解析器。 – Peres

0

尽量把线路中的XML,如:

<TRUSTEDVINFLAG><![CDATA[&#x0;]]></TRUSTEDVINFLAG> 
+0

它的工作,但我没有权限更改我的XML文件 – user838741