从NSObjects动态生成XML-String

时间:2013-03-21 17:17:20

标签: iphone objective-c xml xml-parsing nsobject

我正在尝试使用一个或多个NSObject的属性动态生成一个XML-String。

我正在使用WonderXML,但我不明白我如何调整WonderXML产生的XML-Strings的结构。

到目前为止,这是我的代码:

对象

@interface Getraenke_Object : NSObject {    
@protected
    NSString *item_id;
    NSString *menge;
    NSString *categorie;

    NSString *name;
    NSString *preis;    
    NSString *image; 
}

@property (nonatomic, copy) NSString *item_id;
@property (nonatomic, copy) NSString *menge;
@property (nonatomic, copy) NSString *categorie;
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *preis;
@property (nonatomic, copy) NSString *image;

@end

M文件:

//-----------------Converting the Objects to XML-Strings--------------

    XmlParser *parser = [[XmlParser alloc] init];
    NSString *meinXmlString;

    for(int i=0; i<getraenkeArray.count; i++)
    {
        meinXmlString = [parser toXml:[getraenkeArray objectAtIndex:i] andTag:@"Getraenk" inNameSpace:@"table_info"];
    }

    NSLog(@"meinXmlString: %@\n", meinXmlString);

这就是meinXmlString的样子:

meinXmlString:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Getraenke_Object xmlns="table_info"><name>Chateau_d_Angludet</name>
<menge>1</menge><preis>119</preis><image>Rotwein.png</image>
<categorie>getraenke</categorie><item_id>101</item_id>
</Getraenke_Object>

但它应该如下所示:

testXML:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Table_info><table_id>1</table_id><action_id>3</action_id><Bestellliste>
<item><categorie>getraenke</categorie><item_id>100</item_id><menge>1</menge></item>
<item><categorie>getraenke</categorie><item_id>2</item_id><menge>1</menge></item>
</Bestellliste></Table_info>

我希望我的问题可以理解。 谢谢!

1 个答案:

答案 0 :(得分:0)

您为每个对象创建一个XML字符串,最后只保留最后一个。

WonderXML似乎是根据您传入的对象中的属性及其名称自动创建XML文档。

由于您希望XML包含数组中的所有对象,因此请尝试将整个数组传递给parser toXml的单个调用。你不想要循环。

当然,自己创建XML可能更容易。只需创建一个NSMutableString并添加所需的标记文本。