Пример #1
0
        public void ReadAttrName()
        {
            string         input;
            StringReader   sr;
            HtmlTextReader reader;
            string         output;

            // no whitespace
            input  = "class='red' ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            output = reader.ReadAttributeName();
            Assert.AreEqual("class", output);
            Assert.AreEqual('=', (char)reader.Peek());
            Assert.AreEqual(ParseState.AttributeValue, reader.ParseState);

            // whitespace
            input  = "   class='red' ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            output = reader.ReadAttributeName();
            Assert.AreEqual("class", output);
            Assert.AreEqual('=', (char)reader.Peek());

            // whitespace
            input  = "   class   = 'red' ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            output = reader.ReadAttributeName();
            Assert.AreEqual("class", output);
            Assert.AreEqual(' ', (char)reader.Peek());

            // whitespace
            input  = "   class   = \"red\" ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            output = reader.ReadAttributeName();
            Assert.AreEqual("class", output);
            Assert.AreEqual(' ', (char)reader.Peek());

            // missing attr. the rest is val
            input  = "   =red foo=bar ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            output = reader.ReadAttributeName();
            Assert.AreEqual("=red", output);
            Assert.AreEqual(' ', (char)reader.Peek());
        }
Пример #2
0
        private static string ReadAllAttributes(string input)
        {
            StringBuilder  output = new StringBuilder();
            StringReader   sr     = new StringReader(input);
            HtmlTextReader reader = new HtmlTextReader(sr);

            while (sr.Peek() >= 0)
            {
                string name  = reader.ReadAttributeName();
                string value = reader.ReadAttributeValue();
                if (!string.IsNullOrEmpty(name))
                {
                    output.Append(output.Length > 0 ? " " : "");
                    output.Append(name + "='" + value + "'");
                }
            }
            return(output.ToString());
        }
Пример #3
0
        public void ReadAttrNameAndVal()
        {
            string         input;
            StringReader   sr;
            HtmlTextReader reader;

            input  = "class='red' ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("red", reader.ReadAttributeValue());

            input  = "class = \"red\" ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("red", reader.ReadAttributeValue());

            input  = "   class =red ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("red", reader.ReadAttributeValue());

            input  = "   class =  red ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("red", reader.ReadAttributeValue());

            input  = "   class =  'red' ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("red", reader.ReadAttributeValue());

            // Make sure forward slashes are skipped in the right places...
            input  = " /class = /red ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("/red", reader.ReadAttributeValue());

            // Make sure forward slashes are skipped in the right places...
            input  = " class/ = red ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual("", reader.ReadAttributeValue());
            Assert.AreEqual("=", reader.ReadAttributeName());
            Assert.AreEqual("", reader.ReadAttributeValue());
            Assert.AreEqual("red", reader.ReadAttributeName());
            Assert.AreEqual("", reader.ReadAttributeValue());

            // Make sure forward slashes are skipped in the right places...
            input  = " /class /= /red ";
            sr     = new StringReader(input);
            reader = new HtmlTextReader(sr);
            Assert.AreEqual("class", reader.ReadAttributeName());
            Assert.AreEqual(String.Empty, reader.ReadAttributeValue());
            Assert.AreEqual("=", reader.ReadAttributeName());
            Assert.AreEqual(String.Empty, reader.ReadAttributeValue());
            Assert.AreEqual("red", reader.ReadAttributeName());
            Assert.AreEqual(String.Empty, reader.ReadAttributeValue());
        }