使用GDataXml保存xml时,引号标记丢失

时间:2011-12-08 20:31:52

标签: ios parsing xml-parsing nsxml gdataxml

我有一个像这样的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];

执行此操作后,xml文件如下所示:

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

(注意引号已经消失) 因此,当我想解析这个文件时,我得到所有“null”值。 如何在那里添加引号?或者只是避免这个错误。

1 个答案:

答案 0 :(得分:1)

看起来你在重新解析时会得到空值,因为你不再有名字&amp;姓氏作为属性,但现在将它们作为元素。在创建aPatient元素时,请不要使用addChild而是使用addAttribute或GDataXML的等效元素