一、 UI层处理:
#region 重新生成手机服务栏目列表 XML
private void CreateMetoneTree()
{
xmlDoc_Metone = new XmlDocument();
new Town.Com.MobileServiceTypeCollection().GetMetoneTree(out ds);
// 生成 根 节点
XmlElement treeContentElement = xmlDoc_Metone.CreateElement("NewDataSet");
xmlDoc_Metone.AppendChild(treeContentElement);
// 递归生成频道的 XML 文档
for(int j=0;j
1<ds.tables["tree"].rows.count;j++) #endregion="" #region="" ;="" <="" <summary="" bulidxmltree(xmlelement="" continue;="" datarow="" ds.tables["tree"].rows.count;i++)="" else="" filename='Server.MapPath("Xml/MetoneTree.xml");' for(int="" i="" if(ds.tables["tree"].rows[i].itemarray[2].tostring()="tempRow.ItemArray[0].ToString())" if(int32.parse(ds.tables["tree"].rows[j].itemarray[2].tostring())="0)" location)="" private="" string="" temprow='ds.Tables["Tree"].Rows[location];' tempxmlelement,int="" tempxmlelement.appendchild(treeelement);="" this.appendchildelement("metoneid",temprow.itemarray[0].tostring(),treeelement);="" this.appendchildelement("metonename",temprow.itemarray[1].tostring(),treeelement);="" this.appendchildelement("metoneurl",temprow.itemarray[3].tostring(),treeelement);="" this.appendchildelement("parentmetoneid",temprow.itemarray[2].tostring(),treeelement);="" this.bulidxmltree(treecontentelement,j);="" this.bulidxmltree(treeelement,i);="" tree="" treeelement='xmlDoc_Metone.CreateElement("Tree");' void="" xml="" xmldoc_metone.save(filename);="" xmlelement="" {="" }="" 构="" 树="" 生成="" 节点="" 追加子节点="">
2
3/// 追加子节点
4
5///
6
7/// <param name="strName"/> 节点名字
8
9/// <param name="strInnerText"/> 节点内容
10
11/// <param name="parentElement"/> 父节点
12
13/// <param name="xmlDocument"/>XmlDocument 对象
14
15private void AppendChildElement(string strName , string strInnerText , XmlElement parentElement, XmlDocument xmlDocument )
16
17{
18
19XmlElement xmlElement = xmlDocument.CreateElement(strName) ;
20
21xmlElement.InnerText = strInnerText ;
22
23parentElement.AppendChild(xmlElement);
24
25}
26
27/// <summary>
28
29/// 使用默认的频道 Xml 文档
30
31/// </summary>
32
33/// <param name="strName"/>
34
35/// <param name="strInnerText"/>
36
37/// <param name="parentElement"/>
38
39private void AppendChildElement(string strName , string strInnerText , XmlElement parentElement )
40
41{
42
43AppendChildElement(strName,strInnerText,parentElement,xmlDoc_Metone);
44
45}
46
47#endregion
48
49一点说明:感觉这些代码基本上都是自解释的,关键点都有注释,看看就明白的。
50
51二、 解析xml的xslt
52
53<?xml version="1.0" encoding="gb2312"?>
54<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
55<xsl:output encoding="gb2312" indent="yes" method="xml" version="1.0"></xsl:output>
56<xsl:template match="NewDataSet">
57<xsl:apply-templates select="Tree"></xsl:apply-templates>
58</xsl:template>
59<xsl:template match="Tree">
60<div ondragstart="return false" style="padding-left:20px;">
61<xsl:attribute name="onclick">selectedEntity = '<xsl:value-of select="MetoneID"></xsl:value-of>';clickOnEntity(this);redirect('<xsl:value-of select="MetoneUrl"></xsl:value-of>');</xsl:attribute>
62<xsl:attribute name="open">false</xsl:attribute>
63<xsl:attribute name="id">
64<xsl:value-of select="MetoneID"></xsl:value-of>
65</xsl:attribute>
66<xsl:attribute name="STYLE">
67<xsl:if test="count(ancestor::node()) > 2">
68
69display: none;
70
71</xsl:if>
72
73cursor: hand;
74
75</xsl:attribute>
76<table border="0" cellpadding="0" cellspacing="0" style="line-height:130%">
77<tr>
78<td>
79<a href="{MetoneUrl}" target="main"><xsl:value-of select="MetoneName"></xsl:value-of></a>
80</td>
81</tr>
82</table>
83<xsl:apply-templates select="Tree"></xsl:apply-templates>
84</div>
85</xsl:template>
86</xsl:stylesheet>
87
88三、 一个小技巧:用js把xml的数据用xslt解析后填充到固定的html块中,比如div,调用代码: initAdmin('MetoneTree.xml', 'submenu','MetoneTree.xslt') ,js代码如下:
89
90var view;// 中英文版本切换
91
92var xmlDoc;//MSXML2.DOM 对象
93
94var selectedEntity;// 选中接点 ID 号
95
96function initAdmin(fileName, divTree,xsltFile, expID)// 初始化树状结构
97
98{
99
100var xslDoc;
101
102var strXml;
103
104var objXml;
105
106var xmlHttp;
107
108var xslProc;
109
110var xslTemplate;
111
112//alert(fileName);
113
114xmlDoc = new ActiveXObject("MSXML2.DOMDocument");
115
116xmlDoc.async = false;
117
118xslDoc = new ActiveXObject("MSXML2.FreeThreadedDOMDocument");
119
120xslDoc.async = false;
121
122xmlDoc.load("XML/"+fileName);
123
124xslDoc.load("XSLT/"+xsltFile);
125
126xslTemplate = new ActiveXObject("MSXML2.XSLTemplate");
127
128xslTemplate.stylesheet = xslDoc;
129
130xslProc = xslTemplate.createProcessor();
131
132xslProc.input = xmlDoc;
133
134xslProc.transform();
135
136document.all[divTree].innerHTML = xslProc.output;
137
138if(expID != null)
139
140{
141
142expandSome(document.all[expID]);
143
144}
145
146}
147
148四、 如果有不明白的msn上提问好了,msn: [email protected] ,文中要有疏漏之处请多指教。</ds.tables["tree"].rows.count;j++)>