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"]) &&