diff --git a/source/std/experimental/xml/domparser.d b/source/std/experimental/xml/domparser.d
index 69fe53b..0f0ef81 100644
--- a/source/std/experimental/xml/domparser.d
+++ b/source/std/experimental/xml/domparser.d
@@ -181,6 +181,8 @@ struct DOMBuilder(T, DOMImplementation = dom.DOMImplementation!(T.StringType))
{
switch (cursor.kind)
{
+ // XMLKind.elementEnd is needed for empty tags:
+ case XMLKind.elementEnd:
case XMLKind.elementStart:
case XMLKind.elementEmpty:
auto elem = document.createElement(cursor.name);
@@ -260,4 +262,30 @@ unittest
assert(doc.getElementsByTagName("ccc").length == 1);
assert(doc.documentElement.getAttribute("xmlns:myns") == "something");
+}
+
+unittest
+{
+ import std.experimental.xml.lexers;
+ import std.experimental.xml.parser;
+ import std.experimental.xml.cursor;
+ import std.experimental.allocator.gc_allocator;
+ import domimpl = std.experimental.xml.domimpl;
+
+ alias DOMImplType = domimpl.DOMImplementation!string;
+
+ auto xml = ``;
+ auto builder =
+ xml
+ .lexer
+ .parser
+ .cursor
+ .copyingCursor
+ .domBuilder(new DOMImplType());
+
+ builder.setSource(xml);
+ builder.buildRecursive;
+ auto doc = builder.getDocument;
+
+ assert(doc.childNodes.length == 1);
}
\ No newline at end of file