CSharp08.Program.XMLHelper.AppendChild C# (CSharp) Метод

AppendChild() приватный статический Метод

添加子节点
private static AppendChild ( INode tagNode, XmlNode parent, XmlDocument doc ) : void
tagNode INode Html的父节点
parent System.Xml.XmlNode Xml的父节点
doc System.Xml.XmlDocument Xml文档对象
Результат void
            private static void AppendChild(INode tagNode, XmlNode parent, XmlDocument doc)
            {
                INode node = null;
                XmlNode xmlNode = null;
                XmlAttribute attr = null;
                Hashtable ht = null;

                // 判断是否包含子节点
                if (tagNode.Children != null && tagNode.Children.Size() > 0)
                {
                    for (int i = 0; i < tagNode.Children.Size(); i++)
                    {
                        node = tagNode.Children[i];
                        xmlNode = null;
                        attr = null;
                        ht = null;

                        // 如果是html标记节点
                        if (node is TagNode)
                        {
                            TagNode tn = node as TagNode;
                            if (Regex.IsMatch(tn.TagName, validName))
                            {
                                xmlNode = doc.CreateElement(tn.TagName);

                                // 添加属性
                                ht = tn.Attributes;
                                foreach (DictionaryEntry ent in ht)
                                {
                                    // 查看属性名是否合法
                                    if (Regex.IsMatch(ent.Key.ToString(), validName))
                                    {
                                        attr = doc.CreateAttribute(ent.Key.ToString());
                                        attr.Value = ent.Value.ToString();
                                        xmlNode.Attributes.Append(attr);
                                    }
                                }
                            }
                        }

                        // 如果是文本节点
                        if (node is TextNode)
                        {
                            xmlNode = doc.CreateTextNode((node as TextNode).ToPlainTextString());
                        }

                        if (xmlNode != null)
                        {
                            parent.AppendChild(xmlNode);
                            AppendChild(node, xmlNode, doc);
                        }
                    }
                }
            }