Skip to content

Commit 9d94396

Browse files
committed
Merge branch 'devel' into feature/issue-8-invalid-entity-handling
# Conflicts: # src/AngleSharp.Xml.Tests/Tokenizer/XmlTokenization.cs
2 parents 2107f77 + 4595c86 commit 9d94396

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

src/AngleSharp.Xml.Tests/Tokenizer/XmlTokenization.cs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,5 +211,32 @@ public void XmlTokenizerTagWithInvalidReferenceSuppresses()
211211
Assert.AreEqual("baz", foo.Attributes[1].Key);
212212
Assert.AreEqual("123", foo.Attributes[1].Value);
213213
}
214+
215+
[Test]
216+
public void XmlTokenizerTagThrowsWithADiamond()
217+
{
218+
var s = new TextSource("<foo bar=\"a < b\">");
219+
220+
var t = CreateTokenizer(s);
221+
t.IsSuppressingErrors = false;
222+
Assert.Throws<XmlParseException>(() => t.Get());
223+
}
224+
225+
[Test]
226+
public void XmlTokenizerTagSuppressesWithADiamond()
227+
{
228+
var s = new TextSource("<foo bar=\"a < b\">");
229+
var t = CreateTokenizer(s);
230+
t.IsSuppressingErrors = true;
231+
var foo = t.Get() as XmlTagToken;
232+
233+
Assert.IsNotNull(foo);
234+
Assert.AreEqual(XmlTokenType.StartTag, foo.Type);
235+
Assert.IsFalse(foo.IsSelfClosing);
236+
Assert.AreEqual("foo", foo.Name);
237+
Assert.AreEqual(1, foo.Attributes.Count);
238+
Assert.AreEqual("bar", foo.Attributes[0].Key);
239+
Assert.AreEqual("a < b", foo.Attributes[0].Value);
240+
}
214241
}
215242
}

src/AngleSharp.Xml/Parser/XmlTokenizer.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,7 @@ private XmlToken AttributeValue(XmlTagToken tag, Char quote)
10621062
if (c == Symbols.EndOfFile)
10631063
throw XmlParseError.EOF.At(GetCurrentPosition());
10641064

1065-
if (c == Symbols.LessThan)
1065+
if (c == Symbols.LessThan && !IsSuppressingErrors)
10661066
throw XmlParseError.XmlLtInAttributeValue.At(GetCurrentPosition());
10671067

10681068
if (c == Symbols.Ampersand)

0 commit comments

Comments
 (0)