/// <summary> /// 获得所有的文档节点 /// </summary> /// <returns>文档节点列表</returns> public CHMNodeList GetAllNodes() { CHMNodeList list = new CHMNodeList(); InnerGetNodes(list, nodeList); return(list); }
/// <summary> /// 递归实现将nodes写入hhc文件中 /// </summary> /// <param name="nodeList"></param> private void NodesHhc(CHMNodeList nodeList) { if (nodeList.Count == 0 || nodeList == null) { return; } streamWriter.WriteLine(" <UL>"); foreach (CHMNode node in nodeList) { if (node.Nodes != null && node.Nodes.Count > 0)//如果是父节点 { streamWriter.WriteLine(" <LI><OBJECT type=\"text/sitemap\">"); streamWriter.WriteLine(" <param name=\"Name\" value=\"" + node.Name + "\">"); streamWriter.WriteLine(" </OBJECT>"); NodesHhc(node.Nodes); } else//如果是子节点 { streamWriter.WriteLine(" <LI><OBJECT type=\"text/sitemap\">"); streamWriter.WriteLine(" <param name=\"Name\" value=\"" + node.Name + "\">"); streamWriter.WriteLine(" <param name=\"Local\" value=\"" + node.Local + "\">"); streamWriter.WriteLine(" </OBJECT>"); } } streamWriter.WriteLine(" </UL>"); }
private void InnerGetNodes(CHMNodeList list, CHMNodeList list2) { foreach (CHMNode node in list2) { list.Add(node); InnerGetNodes(list, node.Nodes);//以递归的方式获得所有节点 } }
//递归写hhp中的Files private void NodesHhp(CHMNodeList nodeList) { if (nodeList == null || nodeList.Count == 0) { return; } foreach (CHMNode node in nodeList) { if (node.Nodes == null || node.Nodes.Count == 0) { streamWriter.WriteLine(node.Local); } else { NodesHhp(node.Nodes); } } }
//nodes保存为xml private void NodesToXML(CHMNodeList nodes, System.Xml.XmlElement RootElement) { System.Xml.XmlDocument doc = RootElement.OwnerDocument; foreach (CHMNode node in nodes) { System.Xml.XmlElement NodeElement = doc.CreateElement("Node"); NodeElement.SetAttribute("Name", node.Name); NodeElement.SetAttribute("Local", node.Local); NodeElement.SetAttribute("ImageNumber", node.ImageNo); NodeElement.SetAttribute("KeyWords", node.KeyWords); RootElement.AppendChild(NodeElement); if (node.Nodes != null && node.Nodes.Count > 0) { System.Xml.XmlElement ItemsElement = doc.CreateElement("Items"); NodeElement.AppendChild(ItemsElement); NodesToXML(node.Nodes, ItemsElement); } } }
private string GetFirstPage(CHMNodeList nodeList) { string str = ""; if (nodeList == null || nodeList.Count == 0) { return(str); } foreach (CHMNode node in nodeList) { if (node.Nodes == null || node.Nodes.Count == 0) { return(node.Local); } else { str = GetFirstPage(node.Nodes); } } return(str); }
//xml转为为nodes private void NodesFromXML(CHMNodeList nodes, System.Xml.XmlElement RootElement) { foreach (System.Xml.XmlNode node in RootElement.ChildNodes) { if (node.Name == "Node") { System.Xml.XmlElement element = (System.Xml.XmlElement)node; CHMNode NewNode = new CHMNode(); NewNode.Name = element.GetAttribute("Name"); NewNode.Local = element.GetAttribute("Local"); NewNode.ImageNo = element.GetAttribute("ImageNumber"); NewNode.KeyWords = element.GetAttribute("KeyWords"); nodes.Add(NewNode); foreach (System.Xml.XmlNode node2 in element.ChildNodes) { if (node2.Name == "Items") { NodesFromXML(NewNode.Nodes, (System.Xml.XmlElement)node2); } } } } }
/// <summary> /// 添加若干个节点 /// </summary> /// <param name="nodes"></param> public void AddRange(CHMNodeList nodes) { this.InnerList.AddRange(nodes); }