求救!关于TreeView显示XML的问题!

delphitop 2005-01-25 10:52:15
XML格式如下,我想在reeView中显示如下XML中标签为title的内容,并生成树。那位兄弟姐妹帮帮忙吧!急救啊!分不够另开贴再给!

<?xml version="1.0" standalone="no"?>
<!--以下是课程信息!-->
<manifest>
<metadata />
<organizations>
<organization identifier="O0001">
<title>中文课</title>
<items identifier="I0001">
<title>第一章</title>
<items identifier="I0002">

<title>第一节</title>
<items identifier="I0003">
<title>第1小节</title>
<items identifier="I0004" identifierref="R0004">
<title>question.htm</title>
</items>
</items>
<title>第二节</title>
<items identifier="I0003">
<title>第1小节</title>
<items identifier="I0004" identifierref="R0004">
<title>question.htm</title>
</items>
</items>

</items>
</items>
</organization>
</organizations>
<resources>
<resources identifier="R0004" href="question1.htm">
<file href="question1.htm" />
</resources>
</resources>
</manifest>


我想得到的结果应该是这样的:

中文课
第一章
第一节
第1小节
question.htm
第二节
第1小节
question.htm


...全文
260 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
haoco 2005-02-21
  • 打赏
  • 举报
回复
up
delphitop 2005-02-05
  • 打赏
  • 举报
回复
解决了,代码如下:
'递归调用,取得所有title的名称,并生成树
'参数说明:
'xmlroot:XML的title根结点
'resourcesNode:节点resources
'nodes:树的父节点
Public Sub AddTreeNode(ByVal xmlroot As XmlNode, ByVal resourcesNode As XmlNode, ByVal nodes As System.Windows.Forms.TreeNodeCollection)
Dim text As String
Dim node As XmlNode
Dim TitleNode As XmlNode
Dim i As Integer = 0
Dim strIdentifierref As String '关联的文件代号
Dim explainIdentifierref As String
Dim TempResourceNode As XmlNode
Dim childnode As XmlNode
Dim explainnodeText As String
Dim hintnodeText As String
Dim resourcesList As XmlNodeList
Dim isQuestion As String

'查找字符串
Dim tempList As XmlNodeList = xmlroot.SelectNodes("item")

For Each node In tempList
text = ""
isQuestion = "0"
'判断是否有identifierref属性,如果有则查找resources中相应的连接文件
If Not node.Attributes.ItemOf("identifierref") Is Nothing Then
strIdentifierref = node.Attributes.ItemOf("identifierref").InnerText
resourcesList = resourcesNode.SelectNodes("resource")
For Each TempResourceNode In resourcesList
If TempResourceNode.Attributes.ItemOf("identifier").InnerText = strIdentifierref Then
text = TempResourceNode.Attributes.ItemOf("href").InnerText
End If
Next

'判断是否实问题或学习节点
If Not node.Attributes.ItemOf("itemtype") Is Nothing Then
isQuestion = node.Attributes.ItemOf("itemtype").InnerText
End If

For Each childnode In node.ChildNodes
explainnodeText = ""
hintnodeText = ""
If childnode.Name = "explain" Then
If Not childnode.Attributes.ItemOf("identifierref") Is Nothing Then
explainIdentifierref = childnode.Attributes.ItemOf("identifierref").InnerText
resourcesList = resourcesNode.SelectNodes("resource")
For Each TempResourceNode In resourcesList
If TempResourceNode.Attributes.ItemOf("identifier").InnerText = explainIdentifierref Then
explainnodeText = TempResourceNode.Attributes.ItemOf("href").InnerText
End If
Next
End If
ElseIf childnode.Name = "hint" Then
If Not childnode.Attributes.ItemOf("identifierref") Is Nothing Then
explainIdentifierref = childnode.Attributes.ItemOf("identifierref").InnerText
resourcesList = resourcesNode.SelectNodes("resource")
For Each TempResourceNode In resourcesList
If TempResourceNode.Attributes.ItemOf("identifier").InnerText = explainIdentifierref Then
hintnodeText = TempResourceNode.Attributes.ItemOf("href").InnerText
End If
Next
End If
End If
Next

Else '判断是否有identifierref属性,如果没有显示title的值
If Not node.ChildNodes.Item(0) Is Nothing Then
TitleNode = node.ChildNodes.Item(0) '查找items下的第一个子节点,即Title

If TitleNode.InnerText <> Nothing Then
text = TitleNode.InnerText
Else
If Not TitleNode.InnerText Is Nothing And _
TitleNode.Attributes.Count > 0 Then
text = TitleNode.InnerText
Else
text = TitleNode.Name
End If
End If

End If
End If
'在父节点下增加节点
Dim new_child As New TreeNode(text)
nodes.Add(new_child)
iLevel = NodeLevel(new_child).ToString
If iLevel = 2 Then
new_child.ImageIndex = 8
ElseIf iLevel = 3 Then
new_child.ImageIndex = 10
ElseIf iLevel = 4 Then
new_child.ImageIndex = 7
End If
If isQuestion <> "0" Then
If isQuestion = "1" Then
new_child.ImageIndex = 2 '为学习节点增加相关图片
ElseIf isQuestion = "2" Then
new_child.ImageIndex = 12 '为问题节点增加相关图片
End If
End If

If explainnodeText <> "" Then
Dim tree_node As New TreeNode
tree_node.Text = explainnodeText
tree_node.Tag = 1 '标识节点为解说
new_child.Nodes.Add(tree_node)
tree_node.ImageIndex = 12 '为节点增加相关图片
End If

If hintnodeText <> "" Then
Dim tree_node As New TreeNode
tree_node.Text = hintnodeText
tree_node.Tag = 2 '标识节点为提示
new_child.Nodes.Add(tree_node)
tree_node.ImageIndex = 1 '为节点增加相关图片
End If
'循环递归
AddTreeNode(node, resourcesNode, new_child.Nodes)
Next
End Sub
wqdzgh 2005-01-29
  • 打赏
  • 举报
回复
你哪不明白啊
心情解码 2005-01-26
  • 打赏
  • 举报
回复
帮顶..




-------
wqdzgh 2005-01-26
  • 打赏
  • 举报
回复
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'在此处放置初始化页的用户代码
If Not IsPostBack Then
TreeView1.TreeNodeSrc = "data/mnuManage.xml"
TreeView1.DataBind()
End If
End Sub
wqdzgh 2005-01-26
  • 打赏
  • 举报
回复
<%@ Register TagPrefix="iewc" Namespace="Microsoft.Web.UI.WebControls" Assembly="Microsoft.Web.UI.WebControls, Version=1.0.2.226, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="menu.aspx.vb" Inherits="Manage.menu"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>menu</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout" style="BACKGROUND-COLOR: #66ccff">
<form id="Form1" method="post" runat="server">
<iewc:TreeView id="TreeView1" style="Z-INDEX: 101; LEFT: 8px; POSITION: absolute; TOP: 8px" runat="server"></iewc:TreeView>
</form>
</body>
</HTML>
wqdzgh 2005-01-26
  • 打赏
  • 举报
回复
微软的treeview控件 xml文件格式:
<?xml version="1.0" encoding="utf-8" ?>
<TREENODES>
<treenode text="文章管理" expanded="true">
<treenode text="添加文章" NavigateUrl="Novel/AddNovel.aspx" Target="main" />
<treenode text="查看文章" NavigateUrl="Novel/NovelList.aspx" Target="main" />
<treenode text="查找文章" NavigateUrl="Novel/FindNovel.aspx" Target="main" />
</treenode>
<treenode text="管理员选项">
<treenode text="更改密码" />
</treenode>
</TREENODES>
liulxmooo 2005-01-26
  • 打赏
  • 举报
回复
up
delphitop 2005-01-26
  • 打赏
  • 举报
回复
怎么没有人答复我啊?大家帮帮忙吧!帮我研究一下!救命用啊!痛哭流涕ing!
delphitop 2005-01-26
  • 打赏
  • 举报
回复
大家帮我研究一下啊!这几天就得交工了!急啊!谢谢了!

16,718

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧