public static XmlContentType Deserialize(string xmlString) { XmlContentType root = null; XmlContentType current = null; XmlContentType tmp = null; using (var reader = XmlReader.Create(new StringReader(xmlString))) { while (reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: tmp = new XmlContentType(reader.Name); if (reader.HasAttributes) { while (reader.MoveToNextAttribute()) { tmp.AddAttribute(reader.Name, reader.Value); } // Move the reader back to the element node. reader.MoveToElement(); } if (root == null) { root = current = tmp; } else { current.AddChildren(tmp); current = tmp; } break; case XmlNodeType.Text: if (tmp == null) { throw new Exception("XMLContentType: ERRORCODE 1"); } tmp.SetValue(reader.Value); break; case XmlNodeType.EndElement: if (current == null) { throw new Exception("XMLContentType: ERRORCODE 2"); } current = current.Parent; break; } } } return(root); }
public void AddChildren(XmlContentType childNode) { childNode.Parent = this; Children.Add(childNode); }