用代码生成一个TreeView的XML文件。
一个节点一个节点添加(当然,是用循环)。

解决方案 »

  1.   

    我就是这样做的啊,
    你看看
       Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            '在此处放置初始化页的用户代码
            Dim src = Server.UrlDecode(Trim(Request.QueryString("src")))        If src = "" Then
                Response.Write("<script language=javascript>alert('错误,参数不能为空');window.close();</script>")
                Response.End()
            End If
            Dim type = Server.UrlDecode(Trim(Request.QueryString("type")))
            Dim SqlCmd = "select * from 设备检修计划表 where 检修计划名称='" & src & "'"
            DeviceConnection.Open()
            Dim ada As New SqlClient.SqlDataAdapter(SqlCmd, DeviceConnection)
            Dim dts As New Data.DataSet()
            ada.Fill(dts, "设备检修计划表")
            Response.ContentEncoding = System.Text.Encoding.Default
            Response.Write("<?xml version='1.0' encoding='GB2312' ?>")
            'If dts.Tables(0).Rows.Count = 0 Then
            'Response.Write("<TREENODES><TREENODE TEXT='没有检修计划'/></TREENODES>")
            'Response.End()
            'End If
            Response.Write("<TREENODES>")
            Response.Write("<TREENODE TEXT='炼油设备部&lt;FONT color=red>(" & dts.Tables(0).Rows.Count & "个)&lt;/FONT>'>")
            DeviceConnection.Close()
            If dts.Tables(0).Rows.Count <> 0 Then
                If type = "1" Then
                    read_xml()
                Else
                    read_xml1()
                End If
            End If
            Response.Write("</TREENODE>")
            Response.Write("</TREENODES>")
        End Sub
        '##############################################
        '按照部门生成xml
        '##############################################
        Sub read_xml()
            Dim reader As New System.Xml.XPath.XPathDocument(Server.MapPath("..") & "//settings//xml//设备参数范围.xml")
            Dim objnav As System.Xml.XPath.XPathNavigator = reader.CreateNavigator
            Dim objite As System.Xml.XPath.XPathNodeIterator = objnav.Select("descendant::设备参数范围/设备信息主表/部门/name")        While objite.MoveNext
                Dim SqlCmd = "select 设备信息主表.设备名称,设备信息主表.部门 from 设备信息主表,设备检修计划表 where 设备检修计划表.检修计划名称='" & Trim(Request.QueryString("src")) & "' and 设备信息主表.设备工艺编号=设备检修计划表.设备工艺编号 and 设备信息主表.部门='" & objite.Current.Value & "'"
                DeviceConnection.Open()
                Dim ada As New SqlClient.SqlDataAdapter(SqlCmd, DeviceConnection)
                Dim dts As New Data.DataSet()
                ada.Fill(dts, "部门表")
                DeviceConnection.Close()
                If dts.Tables(0).Rows.Count <> 0 Then
                    Response.Write("<TREENODE TEXT='" & objite.Current.Value & "&lt;font color=maroon>(" & dts.Tables(0).Rows.Count & ")&lt;/font>'>")
                    Dim objite1 As System.Xml.XPath.XPathNodeIterator = objnav.Select("descendant::设备参数范围/设备信息主表/设备大类/name")
                    While objite1.MoveNext
                        Dim SqlCmd1 = "select 设备信息主表.设备名称,设备信息主表.部门,设备检修计划表.检修任务,设备检修计划表.id from 设备信息主表,设备检修计划表 where 设备检修计划表.检修计划名称='" & Trim(Request.QueryString("src")) & "' and 设备信息主表.设备工艺编号=设备检修计划表.设备工艺编号 and 设备信息主表.部门='" & objite.Current.Value & "' and 设备信息主表.设备大类='" & objite1.Current.Value & "' order by 设备信息主表.设备名称"
                        DeviceConnection.Open()
                        Dim ada1 As New SqlClient.SqlDataAdapter(SqlCmd1, DeviceConnection)
                        Dim dts1 As New Data.DataSet()
                        ada1.Fill(dts1, "部门表")
                        DeviceConnection.Close()
                        If dts1.Tables(0).Rows.Count > 0 Then
                            Response.Write("<TREENODE TEXT='" & objite1.Current.Value & "&lt;font color=blue>(" & dts1.Tables(0).Rows.Count & ")&lt;/font>'>")
                            Dim j
                            For j = 0 To dts1.Tables(0).Rows.Count - 1
                                Response.Write("<TREENODE TEXT='" & Trim(dts1.Tables(0).Rows(j).Item("设备名称")) & "(" & Trim(dts1.Tables(0).Rows(j).Item("检修任务")) & ")' ID='a" & Trim(dts1.Tables(0).Rows(j).Item("id")) & "'/>")
                                Next
                                Response.Write("</TREENODE>")
                        End If
                    End While
                    Response.Write("</TREENODE>")
                End If        End While
        End Sub    '##############################################
        '按照设备分类生成xml
        '##############################################    Sub read_xml1()
            Dim reader As New System.Xml.XPath.XPathDocument(Server.MapPath("..") & "//settings//xml//设备参数范围.xml")
            Dim objnav As System.Xml.XPath.XPathNavigator = reader.CreateNavigator
            Dim objite As System.Xml.XPath.XPathNodeIterator = objnav.Select("descendant::设备参数范围/设备信息主表/设备大类/name")        While objite.MoveNext
                Dim SqlCmd = "select 设备信息主表.设备名称,设备信息主表.部门 from 设备信息主表,设备检修计划表 where 设备检修计划表.检修计划名称='" & Trim(Request.QueryString("src")) & "' and 设备信息主表.设备工艺编号=设备检修计划表.设备工艺编号 and 设备信息主表.设备大类='" & objite.Current.Value & "'"
                DeviceConnection.Open()
                Dim ada As New SqlClient.SqlDataAdapter(SqlCmd, DeviceConnection)
                Dim dts As New Data.DataSet()
                ada.Fill(dts, "部门表")
                DeviceConnection.Close()
                If dts.Tables(0).Rows.Count <> 0 Then
                    Response.Write("<TREENODE TEXT='" & objite.Current.Value & "&lt;font color=maroon>(" & dts.Tables(0).Rows.Count & ")&lt;/font>'>")
                    Dim objite1 As System.Xml.XPath.XPathNodeIterator = objnav.Select("descendant::设备参数范围/设备信息主表/部门/name")
                    While objite1.MoveNext
                        Dim SqlCmd1 = "select 设备信息主表.设备名称,设备信息主表.部门,设备检修计划表.检修任务,设备检修计划表.id from 设备信息主表,设备检修计划表 where 设备检修计划表.检修计划名称='" & Trim(Request.QueryString("src")) & "' and 设备信息主表.设备工艺编号=设备检修计划表.设备工艺编号 and 设备信息主表.设备大类='" & objite.Current.Value & "' and 设备信息主表.部门='" & objite1.Current.Value & "' order by 设备信息主表.设备名称"
                        DeviceConnection.Open()
                        Dim ada1 As New SqlClient.SqlDataAdapter(SqlCmd1, DeviceConnection)
                        Dim dts1 As New Data.DataSet()
                        ada1.Fill(dts1, "部门表")
                        DeviceConnection.Close()
                        If dts1.Tables(0).Rows.Count > 0 Then
                            Response.Write("<TREENODE TEXT='" & objite1.Current.Value & "&lt;font color=blue>(" & dts1.Tables(0).Rows.Count & ")&lt;/font>'>")
                            Dim j
                            For j = 0 To dts1.Tables(0).Rows.Count - 1
                                Response.Write("<TREENODE TEXT='" & Trim(dts1.Tables(0).Rows(j).Item("设备名称")) & "(" & Trim(dts1.Tables(0).Rows(j).Item("检修任务")) & ")' ID='a" & Trim(dts1.Tables(0).Rows(j).Item("id")) & "'/>")
                            Next
                            Response.Write("</TREENODE>")
                        End If
                    End While
                    Response.Write("</TREENODE>")
                End If        End While
        End Sub