私の問題は、sendXML の先頭に複数のブラケットがあることです。
> sendXML: <<<?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>102</item_id><menge>3</menge></item>item><categorie>getraenke</categorie><item_id>101</item_id><menge>2</menge></item>/Bestellliste></Table_info>
ただし、次のようにする必要があります。
sendXML: <?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>102</item_id><menge>3</menge></item><item><categorie>getraenke</categorie><item_id>101</item_id><menge>2</menge></item></Bestellliste></Table_info>
私のコード:
NSMutableArray * objectAttributes = [NSMutableArray arrayWithCapacity:100];
NSString *headerXML = [NSString stringWithFormat:
@"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>"
"<Table_info>"
"<table_id>1</table_id>"
"<action_id>3</action_id>"
"<Bestellliste>"];
NSMutableArray *bodyXML = [NSMutableArray arrayWithCapacity:200];
NSString *endXML = [NSString stringWithFormat:
@"</Bestellliste>"
"</Table_info>"];
for(int i=0, j=0; i<getraenkeArray.count; i++)
{
[objectAttributes addObject:[[getraenkeArray objectAtIndex:i] categorie]];
[objectAttributes addObject:[[getraenkeArray objectAtIndex:i] item_id]];
[objectAttributes addObject:[[getraenkeArray objectAtIndex:i] menge]];
[bodyXML addObject:[NSString stringWithFormat:
@"<item>"
"<categorie>%@</categorie>"
"<item_id>%@</item_id>"
"<menge>%@</menge>"
"</item>",
[objectAttributes objectAtIndex:j],
[objectAttributes objectAtIndex:j+1],
[objectAttributes objectAtIndex:j+2]]];
j=j+3;
}
NSMutableString *sendXML = [NSMutableString stringWithCapacity:500];
int i=0;
[sendXML insertString: endXML atIndex: 0]; // Final-XML
// If no object is in getraenkeArray, bodyXML gets an empy standard-string
if (getraenkeArray.count == 0) {
[bodyXML addObject:[NSString stringWithFormat:
@"<item>"
"<categorie></categorie>"
"<item_id></item_id>"
"<menge></menge>"
"</item>"]];
[sendXML insertString: [bodyXML objectAtIndex:i] atIndex: i+1];
NSLog(@"if");
}
else
{
for(i=0; i<(getraenkeArray.count); i++)
{
[sendXML insertString: [bodyXML objectAtIndex:i] atIndex: i+1]; NSLog(@"i: %d", i);
}
NSLog(@"else");
}
[sendXML insertString: headerXML atIndex: i];
NSLog(@"XML: %@", sendXML);