Пример #1
0
        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);
        }
Пример #2
0
 public void AddChildren(XmlContentType childNode)
 {
     childNode.Parent = this;
     Children.Add(childNode);
 }