diff --git a/lib/pure/xmlparser.nim b/lib/pure/xmlparser.nim
index 56b1220008..2a2c3e1dd8 100644
--- a/lib/pure/xmlparser.nim
+++ b/lib/pure/xmlparser.nim
@@ -96,7 +96,7 @@ proc parse(x: var XmlParser, errors: var seq[string]): XmlNode =
next(x)
of xmlEntity:
## &entity;
- errors.add(errorMsg(x, "unknown entity: " & x.entityName))
+ result = newEntity(x.entityName)
next(x)
of xmlEof: discard
@@ -143,17 +143,24 @@ proc loadXml*(path: string): XmlNode =
result = loadXml(path, errors)
if errors.len > 0: raiseInvalidXml(errors)
-when not defined(testing) and isMainModule:
- import os
+when isMainModule:
+ when not defined(testing):
+ import os
- var errors: seq[string] = @[]
- var x = loadXml(paramStr(1), errors)
- for e in items(errors): echo e
+ var errors: seq[string] = @[]
+ var x = loadXml(paramStr(1), errors)
+ for e in items(errors): echo e
- var f: File
- if open(f, "xmltest.txt", fmWrite):
- f.write($x)
- f.close()
+ var f: File
+ if open(f, "xmltest.txt", fmWrite):
+ f.write($x)
+ f.close()
+ else:
+ quit("cannot write test.txt")
else:
- quit("cannot write test.txt")
+ block: # correctly parse ../../tests/testdata/doc1.xml
+ let filePath = "tests/testdata/doc1.xml"
+ var errors: seq[string] = @[]
+ var xml = loadXml(filePath, errors)
+ assert(errors.len == 0, "The file tests/testdata/doc1.xml should be parsed without errors.")
diff --git a/tests/testdata/doc1.xml b/tests/testdata/doc1.xml
index 4e77481aa1..07cbceeb73 100644
--- a/tests/testdata/doc1.xml
+++ b/tests/testdata/doc1.xml
@@ -5,6 +5,7 @@
bla ah absy hsh
hsh
+ &woohoo;
sjj
bla