|
//遞歸遍歷節(jié)點(diǎn)內(nèi)容,最關(guān)鍵的函數(shù) private void parseNode(TreeNode tn) { IEnumerator ie = tn.Nodes.GetEnumerator(); while (ie.MoveNext()) { TreeNode ctn = (TreeNode) ie.Current; //為最底層節(jié)點(diǎn),即該節(jié)點(diǎn)為RSS節(jié)點(diǎn) if (ctn.GetNodeCount(true) == 0) { xmlLine = GetRSSText(ctn); sr.WriteLine(xmlLine); }
/**//*------------------------------------------------------------- * 作者:劉曉松 * 版本:1.0.0 * 日期:2006.10.29 * 描述:將TreeView中導(dǎo)出為XML數(shù)據(jù) -------------------------------------------------------------*/ using System; using System.Collections; using System.IO; using System.Windows.Forms;![]() namespace TreeViewExport![]() ...{![]() /**//// <summary> /// 將TreeView中導(dǎo)出為XML數(shù)據(jù) /// </summary> public class TreeViewToXmlB![]() ...{ //XML每行的內(nèi)容 private string xmlLine = ""; //用于寫XML文件 private StreamWriter sr;![]() ![]() /**//// <summary> /// 構(gòu)造函數(shù) /// </summary> public TreeViewToXmlB()![]() ...{ }![]() ![]() /**//// <summary> /// 將TreeView中導(dǎo)出為XML數(shù)據(jù) /// </summary> /// <param name="tv">TreeView控件</param> /// <param name="filename">XML文件的保存路徑</param> public void exportToXml(TreeView tv, string filename) ![]() ...{ sr = new StreamWriter(filename, false, System.Text.Encoding.UTF8); //寫文件頭部?jī)?nèi)容 //下面是生成RSS的OPML文件 sr.WriteLine("<?xml version="1.0" encoding="UTF-8"?>"); sr.WriteLine("<opml version="1.0">"); sr.WriteLine("<head>"); sr.WriteLine("<title>RSS</title>"); sr.WriteLine("</head>"); sr.WriteLine("<body>");![]() //遍歷根節(jié)點(diǎn) foreach (TreeNode node in tv.Nodes)![]() ...{ if (node.GetNodeCount(true) == 0)![]() ...{ xmlLine = GetRSSText(node); } else![]() ...{ xmlLine = GetDirectoryText(node); }![]() sr.WriteLine(xmlLine);![]() //遞歸遍歷節(jié)點(diǎn) parseNode(node); }![]() //寫文件尾部?jī)?nèi)容 sr.WriteLine("</body>"); sr.WriteLine("</opml>"); sr.Close(); }![]() //遞歸遍歷節(jié)點(diǎn)內(nèi)容,最關(guān)鍵的函數(shù) private void parseNode(TreeNode tn) ![]() ...{ IEnumerator ie = tn.Nodes.GetEnumerator();![]() while (ie.MoveNext()) ![]() ...{ TreeNode ctn = (TreeNode) ie.Current;![]() //為最底層節(jié)點(diǎn),即該節(jié)點(diǎn)為RSS節(jié)點(diǎn) if (ctn.GetNodeCount(true) == 0)![]() ...{ xmlLine = GetRSSText(ctn); sr.WriteLine(xmlLine); } else//不是最底層節(jié)點(diǎn),即該節(jié)點(diǎn)為目錄節(jié)點(diǎn)![]() ...{ xmlLine = GetDirectoryText(ctn); sr.WriteLine(xmlLine); }![]() //如果還有子節(jié)點(diǎn)則繼續(xù)遍歷 if (ctn.GetNodeCount(true) > 0)![]() ...{ parseNode(ctn); } }![]() sr.WriteLine("</outline>"); }![]() //成生RSS節(jié)點(diǎn)的XML文本行 private string GetRSSText(TreeNode node)![]() ...{ //根據(jù)Node屬性生成XML文本 string rssText = "<outline type="rss" text="" + node.Text + "" xmlUrl="URL"/>";![]() return rssText; }![]() //成生目錄節(jié)點(diǎn)的XML文本行 private string GetDirectoryText(TreeNode node)![]() ...{ //根據(jù)Node屬性生成XML文本 string directoryText = "<outline text="" + node.Text + "">";![]() return directoryText; } } } |
|
|