Index: src/OFXMLElement.m ================================================================== --- src/OFXMLElement.m +++ src/OFXMLElement.m @@ -42,11 +42,18 @@ @implementation OFXMLElement_OFXMLElementBuilderDelegate - (void)elementBuilder: (OFXMLElementBuilder*)builder didBuildElement: (OFXMLElement*)element_ { - element = [element_ retain]; + /* + * Make sure we don't take whitespaces before or after the root element + * into account. + */ + if ([element_ name] != nil) { + assert(element == nil); + element = [element_ retain]; + } } - (void)dealloc { [element release]; Index: tests/OFXMLElementTests.m ================================================================== --- tests/OFXMLElementTests.m +++ tests/OFXMLElementTests.m @@ -117,11 +117,12 @@ [[elem[2] XMLString] isEqual: @""]) TEST(@"+[elementWithXMLString:] and -[stringValue]", [[[OFXMLElement elementWithXMLString: - @"foobazqux"] stringValue] + @"\r\nfoo" + @"bazqux"] stringValue] isEqual: @"foobarbazqux"]) TEST(@"-[elementsForName:namespace:]", (a = [elem[2] elementsForName: @"bar" namespace: @"urn:objfw:test"]) &&