private void Parse() { this._rootNode = this.TryParseNode(); bool flag = this._rootNode == null; if (flag) { throw new XMLFragmentException("Unable to load root node"); } }
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); }