Пример #1
0
        private void Parse()
        {
            this._rootNode = this.TryParseNode();
            bool flag = this._rootNode == null;

            if (flag)
            {
                throw new XMLFragmentException("Unable to load root node");
            }
        }
Пример #2
0
        public XMLFragmentElement TryParseNode()
        {
            bool endOfBuffer = this._buffer.EndOfBuffer;
            XMLFragmentElement result;

            if (endOfBuffer)
            {
                result = null;
            }
            else
            {
                int    position = this._buffer.Position;
                string text     = this.NextToken();
                bool   flag     = text != "<";
                if (flag)
                {
                    throw new XMLFragmentException("Expected \"<\", got " + text);
                }
                XMLFragmentElement xMLFragmentElement = new XMLFragmentElement();
                xMLFragmentElement.Name = this.NextToken();
                while (true)
                {
                    text = this.NextToken();
                    bool flag2 = text == ">";
                    if (flag2)
                    {
                        break;
                    }
                    bool flag3 = text == "/";
                    if (flag3)
                    {
                        goto Block_4;
                    }
                    XMLFragmentAttribute xMLFragmentAttribute = new XMLFragmentAttribute();
                    xMLFragmentAttribute.Name = text;
                    bool flag4 = (text = this.NextToken()) != "=";
                    if (flag4)
                    {
                        goto Block_5;
                    }
                    xMLFragmentAttribute.Value = this.NextToken();
                    xMLFragmentElement.Attributes.Add(xMLFragmentAttribute);
                }
                while (true)
                {
                    int position2 = this._buffer.Position;
                    text = this.NextToken();
                    bool flag5 = text == "<";
                    if (flag5)
                    {
                        text = this.PeekToken();
                        bool flag6 = text == "/";
                        if (flag6)
                        {
                            break;
                        }
                        this._buffer.Position = position2;
                        xMLFragmentElement.Elements.Add(this.TryParseNode());
                    }
                    else
                    {
                        this._buffer.Position    = position2;
                        xMLFragmentElement.Value = this.ReadUntil('<');
                    }
                }
                this.NextToken();
                text = this.NextToken();
                this.NextToken();
                xMLFragmentElement.OuterXml = this.TrimControl(this._buffer.Buffer.Substring(position, this._buffer.Position - position)).Trim();
                xMLFragmentElement.InnerXml = this.TrimTags(xMLFragmentElement.OuterXml);
                bool flag7 = text != xMLFragmentElement.Name;
                if (flag7)
                {
                    throw new XMLFragmentException(string.Concat(new string[]
                    {
                        "Mismatched element pairs: \"",
                        xMLFragmentElement.Name,
                        "\" vs \"",
                        text,
                        "\""
                    }));
                }
                result = xMLFragmentElement;
                return(result);

Block_4:
                this.NextToken();
                xMLFragmentElement.OuterXml = this.TrimControl(this._buffer.Buffer.Substring(position, this._buffer.Position - position)).Trim();
                xMLFragmentElement.InnerXml = "";
                result = xMLFragmentElement;
                return(result);

Block_5:
                throw new XMLFragmentException("Expected \"=\", got " + text);
            }
            return(result);
        }