diff --git a/Source/NSXMLNode.m b/Source/NSXMLNode.m index e69cf85e1..c074f860f 100644 --- a/Source/NSXMLNode.m +++ b/Source/NSXMLNode.m @@ -251,6 +251,8 @@ GS_PRIVATE_INTERNAL(NSXMLNode) NSUInteger count = 0; xmlNodePtr children = NULL; xmlNodePtr node = (xmlNodePtr)(internal->node); + if (node->type == XML_DOCUMENT_NODE) + node = xmlDocGetRootElement((xmlDocPtr)node); for (children = node->children; children && count != index; children = children->next) { @@ -265,6 +267,8 @@ GS_PRIVATE_INTERNAL(NSXMLNode) NSUInteger childCount = 0; xmlNodePtr children = NULL; xmlNodePtr node = (xmlNodePtr)(internal->node); + if (node->type == XML_DOCUMENT_NODE) + node = xmlDocGetRootElement((xmlDocPtr)node); for (children = node->children; children; children = children->next) { @@ -279,6 +283,8 @@ GS_PRIVATE_INTERNAL(NSXMLNode) NSMutableArray *childrenArray = [NSMutableArray array]; xmlNodePtr children = NULL; xmlNodePtr node = (xmlNodePtr)(internal->node); + if (node->type == XML_DOCUMENT_NODE) + node = xmlDocGetRootElement((xmlDocPtr)node); for (children = node->children; children; children = children->next) { @@ -619,7 +625,7 @@ GS_PRIVATE_INTERNAL(NSXMLNode) error = xmlNodeDump(buffer, doc, node, 1, 1); buf = buffer->content; - len = buffer->size; + len = buffer->use; string = StringFromXMLString(buf,len); xmlBufferFree(buffer); AUTORELEASE(string);