public SmolRootElement Parse(string input) { for (int i = 0; i < input.Length; i++) { if (input[i] == '"') { if (quoteLevel == 1) { quoteLevel = 0; } else { quoteLevel = 1; } } if (input[i] == '<') { state = ParsingState.InsideTag; if (buffer.Length != 0) { elem.AddChild(new SmolTextElement(elem) { text = buffer.ToString() }); buffer.Clear(); } if (input[i + 1] == '/') { xmlLevel--; } else { var e = new SmolElement(elem); elem.AddChild(e); elem = e; xmlLevel++; } } else if (input[i] == '>') { if (xmlLevel == 0) { state = ParsingState.NonXML; } else { state = ParsingState.InsideValue; } if (buffer[0] == '/') { elem = elem.parent; } else { elem.tagName = buffer.ToString(); } buffer.Clear(); } else { buffer.Append(input[i]); } } return(elem as SmolRootElement); }
public SmolElement(SmolElement parent) { this.parent = parent; }
public void AddChild(SmolElement elem) { _children.Add(elem); }
public SmolTextElement(SmolElement parent) : base(parent) { }