如何使用GDataXMLNode添加cdata块?

Fed*_*ika 6 xml iphone

我试过这个:

GDataXMLElement * body = [GDataXMLNode elementWithName:@"body"];
[body addChild:[GDataXMLNode elementWithName:@"request" stringValue:@"<![CDATA[ <hello> ]]>"]];
NSLog(@"%@",[body XMLString]);
Run Code Online (Sandbox Code Playgroud)

它输出:

<body> <request> &LT ;![CDATA[< ;hello> ; ]]> ;< /request> </ body`>

但希望它是这样的:

<body>> <request<![CDATA [<hello>]]> </ request >< /body>

我怎么能告诉解析器GDataXMLNode应该是CDATA类?

Ada*_*amH 2

您是否尝试使用:

[[GDataXMLElement alloc] initWithXMLString:"<![CDATA[ .... ]]>"]
Run Code Online (Sandbox Code Playgroud)

根据源代码,将其直接解析为 XML:

const char *utf8Str = [str UTF8String];
xmlDocPtr doc = xmlReadMemory(utf8Str, (int)strlen(utf8Str), NULL, // URL
                              NULL, // encoding
                              kGDataXMLParseOptions);
Run Code Online (Sandbox Code Playgroud)

elementWithName只是逐字抓取字符串:

+ (GDataXMLElement *)elementWithName:(NSString *)name {
    xmlNodePtr theNewNode = xmlNewNode(NULL, // namespace
                                       GDataGetXMLString(name));
    if (theNewNode) {
    // succeeded
    return [self nodeConsumingXMLNode:theNewNode];
}
return nil;
Run Code Online (Sandbox Code Playgroud)