Ergänzen Sie GDataXMLNode.h
Fügen Sie den folgenden zu GDataXMLNode.m
+ (GDataXMLElement *)elementWithName:(NSString *)name cDataStringValue:(NSString *)value {
xmlNodePtr theNewNode = xmlNewNode(NULL, // namespace
GDataGetXMLString(name));
if (theNewNode) {
NSUInteger length = [value lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
xmlNodePtr textNode = xmlNewCDataBlock(theNewNode->doc, GDataGetXMLString(value), length);
if (textNode) {
xmlNodePtr temp = xmlAddChild(theNewNode, textNode);
if (temp) {
// succeeded
return [self nodeConsumingXMLNode:theNewNode];
}
}
// failed; free the node and any children
xmlFreeNode(theNewNode);
}
return nil;
}
- (void)setCDataStringValue:(NSString *)value {
if (xmlNode_ != NULL && value != nil) {
NSUInteger length = [value lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
xmlNodePtr textNode = xmlNewCDataBlock(xmlNode_->doc, GDataGetXMLString(value), length);
if (textNode) {
xmlAddChild(xmlNode_, textNode);
}
}
}
Sie brauchen nicht die setCDataStringValue Methode für dieses Beispiel aber ich eingeschlossen es trotzdem, so dass Sie optional die GDataXMLNode erstellen und fügen Sie später die CData.
Ihr Beispiel wäre dann:
GDataXMLElement * body = [GDataXMLNode elementWithName:@"body"];
GDataXMLElement * response = [GDataXMLNode elementWithName:@"response" cDataStringValue:@"<hello>"];
[body addChild:response];
NSLog(@"%@",[body XMLString]);
Welche Ausgänge:
<body><response><![CDATA[<hello>]]></response></body>
jemals herausfinden? Ich würde es auch gerne wissen. – ransomweaver
Dies führt auch dazu, dass die CDATA vollständig entfernt wird: GDataXMLElement * n = [[GDataXMLElement-Zuweisung] initWithXMLString: @ " " error: nil]; –
ransomweaver
so erhalten Sie Mystring –
ransomweaver