0

我有一个这样的xml文件:

<Patients>
<patient name="someName" lastName="someLastName">
<aProperty>anIntegerValue</aProperty>
</patient>
</Patients>

所以我用 NSXMLParser 解析这个:

在 didStartElement 我有类似的东西:

if ([elementName isEqual:@"Patients"]) {
appDelegate.patients = [[NSMutableArray alloc] init];
}
else if ([elementName isEqualToString:@"patient"]){
    aPatient = [[Patient alloc] init];
    aPatient.name = [attributeDict objectForKey:@"name"];
    aPatient.lastName = [attributeDict objectForKey:@"lastName"];

然后在某个时候我想保存所做的更改,所以我使用 GDataXML 像这样保存它:

GDataXMLElement * patientsElement = [GDataXMLNode elementWithName:@"Patients"];
for(Patient *aPatient in patients) {
    GDataXMLElement *nameElement = [GDataXMLNode elementWithName:@"name"];
            GDataXMLElement *lastNameElement = [GDataXMLNode elementWithName:@"lastName"];
[aPatient addChild:nameElement];
[aPatient addChild:lastNameElement];

ETC

完成此操作后,xml 文件如下所示:

<Patients>
<patient>
<name>someName</name> 
<lastName>someLastName</lastName>
<aProperty>anIntegerValue</aProperty>
</patient>
</Patients>

(注意引号不见了)所以当我想解析这个文件时,我得到所有“空”值。如何在此处添加引号?或者只是避免这个错误。

4

1 回答 1

1

看起来您在重新解析时获得了空值,因为您不再将姓名和姓氏作为属性,但现在将它们作为元素。创建患者元素时不要 addChild 而不是 addAttribute 或 GDataXML 的等效项

于 2011-12-08T23:31:28.200 回答