Exemple #1
0
        /// <inheritdoc />
        public override IElement ParseSubtree(String html)
        {
            var context  = ((IElement)this).Owner?.Context;
            var source   = new TextSource(html);
            var document = new XmlDocument(context, source);
            var parser   = new XmlDomBuilder(document);
            var options  = new XmlParserOptions
            {
                IsSuppressingErrors = true,
            };

            return(parser.ParseFragment(options, this).DocumentElement);
        }
Exemple #2
0
        internal async static Task <IDocument> LoadAsync(IBrowsingContext context, CreateDocumentOptions options, CancellationToken cancelToken)
        {
            var parserOptions = new XmlParserOptions {
            };
            var document      = new XmlDocument(context, options.Source);
            var parser        = new XmlDomBuilder(document);

            document.Setup(options);
            context.NavigateTo(document);
            context.Fire(new HtmlParseEvent(document, completed: false));
            await parser.ParseAsync(default(XmlParserOptions), cancelToken).ConfigureAwait(false);

            context.Fire(new HtmlParseEvent(document, completed: true));
            return(document);
        }
Exemple #3
0
        /// <summary>
        /// Loads the document in the provided context from the given response.
        /// </summary>
        /// <param name="context">The browsing context.</param>
        /// <param name="response">The response to consider.</param>
        /// <param name="source">The source to use.</param>
        /// <param name="cancelToken">Token for cancellation.</param>
        /// <returns>The task that builds the document.</returns>
        internal async static Task <SvgDocument> LoadAsync(IBrowsingContext context, IResponse response, TextSource source, CancellationToken cancelToken)
        {
            var contentType = response.Headers.GetOrDefault(HeaderNames.ContentType, MimeTypes.Svg);
            var document    = new SvgDocument(context, source);
            var parser      = new XmlDomBuilder(document);

            document.ContentType = contentType;
            document.Referrer    = response.Headers.GetOrDefault(HeaderNames.Referer, String.Empty);
            document.DocumentUri = response.Address.Href;
            document.Cookie      = response.Headers.GetOrDefault(HeaderNames.SetCookie, String.Empty);
            document.ReadyState  = DocumentReadyState.Loading;
            await parser.ParseAsync(default(XmlParserOptions), cancelToken).ConfigureAwait(false);

            return(document);
        }
Exemple #4
0
        internal async static Task <IDocument> LoadAsync(IBrowsingContext context, CreateDocumentOptions options, CancellationToken cancelToken)
        {
            var parserOptions = new XmlParserOptions {
            };
            var document      = new SvgDocument(context, options.Source);
            var factory       = context.Configuration.GetFactory <IElementFactory <SvgElement> >();

            document.Setup(options);
            context.NavigateTo(document);
            context.Fire(new HtmlParseEvent(document, completed: false));
            using (var parser = new XmlDomBuilder(document, factory.Create))
            {
                await parser.ParseAsync(parserOptions, cancelToken).ConfigureAwait(false);
            }
            context.Fire(new HtmlParseEvent(document, completed: true));
            return(document);
        }
Exemple #5
0
        internal async static Task <IDocument> LoadAsync(IBrowsingContext context, CreateDocumentOptions options, CancellationToken cancelToken)
        {
            var document = new XmlDocument(context, options.Source);
            var evt      = new HtmlParseStartEvent(document);
            var events   = context.Configuration.Events;
            var parser   = new XmlDomBuilder(document);

            document.Setup(options);
            context.NavigateTo(document);

            if (events != null)
            {
                events.Publish(evt);
            }

            await parser.ParseAsync(default(XmlParserOptions), cancelToken).ConfigureAwait(false);

            evt.FireEnd();
            return(document);
        }
Exemple #6
0
        public void HelloWorldBasicTest()
        {
            XmlDocument   doc      = new XmlDocument();
            XmlDomBuilder builder  = new XmlDomBuilder(doc);
            XmlNode       htmlElem = builder.AddElement(builder.RootNode, "html");
            XmlNode       bodyElem = builder.AddElement(htmlElem, "body");
            XmlNode       anchor   = builder.AddElement(bodyElem, "a");

            builder.AddAttribute(anchor, "class", "bold");
            builder.AddAttribute(anchor, "class", "red");
            builder.AddText(anchor, "Some Anchor Text");
            Console.WriteLine(doc.OuterXml);

            //Assert.AreEqual("bold", builder.GetAttribute(anchor, "class"));
            //Assert.IsEmpty(builder.GetAttribute(anchor, "nonexistant"));

            // Ensure we don't repeat attribute values
            Assert.AreEqual("bold", doc.SelectSingleNode("//a/@class").Value);

            // Just check full output...
            Assert.AreEqual("<html><body><a class=\"bold\">Some Anchor Text</a></body></html>", doc.OuterXml);
        }
Exemple #7
0
        /// <summary>
        /// Loads the document in the provided context from the given response.
        /// </summary>
        /// <param name="context">The browsing context.</param>
        /// <param name="response">The response to consider.</param>
        /// <param name="source">The source to use.</param>
        /// <param name="cancelToken">Token for cancellation.</param>
        /// <returns>The task that builds the document.</returns>
        internal async static Task <XmlDocument> LoadAsync(IBrowsingContext context, IResponse response, TextSource source, CancellationToken cancelToken)
        {
            var document = new XmlDocument(context, source);
            var evt      = new HtmlParseStartEvent(document);
            var events   = context.Configuration.Events;
            var parser   = new XmlDomBuilder(document);

            document.ContentType = response.Headers.GetOrDefault(HeaderNames.ContentType, MimeTypes.Xml);
            document.Referrer    = response.Headers.GetOrDefault(HeaderNames.Referer, String.Empty);
            document.DocumentUri = response.Address.Href;
            document.Cookie      = response.Headers.GetOrDefault(HeaderNames.SetCookie, String.Empty);
            document.ReadyState  = DocumentReadyState.Loading;
            context.NavigateTo(document);

            if (events != null)
            {
                events.Publish(evt);
            }

            await parser.ParseAsync(default(XmlParserOptions), cancelToken).ConfigureAwait(false);

            evt.FireEnd();
            return(document);
        }