public void ReadScript() { string input; HtmlTextReader reader; StringReader sr; // Basic open close tag with text input = "<Script type='javascript'> console.log('<a>some tag</a>') </script>"; sr = new StringReader(input); reader = new HtmlTextReader(sr); Assert.AreEqual(ParseState.Text, reader.ParseState); Assert.AreEqual("", reader.ReadNext()); Assert.AreEqual(ParseState.OpenTag, reader.ParseState); Assert.AreEqual("script", reader.ReadNext()); Assert.AreEqual(ParseState.AttributeName, reader.ParseState); Assert.AreEqual("type", reader.ReadNext()); Assert.AreEqual(ParseState.AttributeValue, reader.ParseState); Assert.AreEqual("javascript", reader.ReadNext()); Assert.AreEqual(ParseState.AttributeName, reader.ParseState); Assert.AreEqual("", reader.ReadNext()); Assert.AreEqual(ParseState.Text, reader.ParseState); Assert.AreEqual(" console.log('<a>some tag</a>') ", reader.ReadRCData("script")); Assert.AreEqual(ParseState.Text, reader.ParseState); Assert.AreEqual("", reader.ReadNext()); Assert.AreEqual(ParseState.Done, reader.ParseState); }
internal static KeyValuePair <string, ParseState>[] ReadAll(HtmlTextReader reader) { List <KeyValuePair <string, ParseState> > toks = new List <KeyValuePair <string, ParseState> >(); while (reader.ParseState != ParseState.Done) { toks.Add(new KeyValuePair <string, ParseState>(reader.ReadNext(), reader.ParseState)); } return(toks.ToArray()); }
public void ReadNext() { string input; HtmlTextReader reader; StringReader sr; // Basic open close tag with text input = " <a href='www.foobar.com'>Click me</a> "; sr = new StringReader(input); reader = new HtmlTextReader(sr); // Starts in text Assert.AreEqual(ParseState.Text, reader.ParseState); // There was no text, so should be empty Assert.AreEqual(" ", reader.ReadNext()); // Open tag Assert.AreEqual(ParseState.OpenTag, reader.ParseState); Assert.AreEqual("a", reader.ReadNext()); // href Assert.AreEqual(ParseState.AttributeName, reader.ParseState); Assert.AreEqual("href", reader.ReadNext()); // www.foobar.com Assert.AreEqual(ParseState.AttributeValue, reader.ParseState); Assert.AreEqual("www.foobar.com", reader.ReadNext()); // Need to keep reading attributes until we get an empty one Assert.AreEqual(ParseState.AttributeName, reader.ParseState); Assert.AreEqual(String.Empty, reader.ReadNext()); // Click me Assert.AreEqual(ParseState.Text, reader.ParseState); Assert.AreEqual("Click me", reader.ReadNext()); // Close tag Assert.AreEqual(ParseState.CloseTag, reader.ParseState); Assert.AreEqual("a", reader.ReadNext()); Assert.AreEqual(ParseState.Text, reader.ParseState); }