日期:2014-05-20  浏览次数:20810 次

怎么样把treeview转换成XML?
怎么样把treeview转换成XML?

------解决方案--------------------
楼主的问题也困绕了我好长时间
顶一下,先
------解决方案--------------------
1
1.1
1.2
2
2.1
2.1.1
2.1.2
3

变成啥样?
------解决方案--------------------
TreeView控件代表着一个具有等级格式的数据。从TreeView控件获取XML非常有用,因为XML也代表着等级数据。

为了能够从TreeView控件中获取数据,你必须反复访问树形控件中的节点并把它们添加到一个XML文档。下面的WriteTreeToDOM方法说明了在Visual Basic 6中的这一过程。程序必须需要引用到微软的XML剖析器,这样这一方法才有效。

这一方法包含两个参数变量。第一个是要添加到XML文档中的TreeView控件节点,第二个是要添加到新元素中的XML节点。当WriteTreeToDOM第一次被调用时,一个DOMDocument对象就会被传递并作为XML节点。

Private Sub WriteTreeToDOM(ByRefTreeNode As Node, _
ByRefXMLNode As IXMLDOMNode)
Dim objNewNode As IXMLDOMNode
Dim objDOM As DOMDocument
Dim objChildNode As Node

On Error GoTo ERR_HANDLER

Set objDOM = XMLNode.ownerDocument
If objDOM Is Nothing Then
Set objDOM = XMLNode
End If

Set objNewNode = objDOM.createElement(TreeNode.Text)

'Add treeview node as child
Call XMLNode.appendChild(objNewNode)

'Process child nodes
If TreeNode.children > 0 Then
Set objChildNode = TreeNode.Child

Do Until objChildNode Is Nothing
Call WriteTreeToDOM(objChildNode, objNewNode)
Set objChildNode = objChildNode.Next
Loop
End If

ERR_HANDLER:
If Err.Number <> 0 Then
MsgBoxErr.Description
End If
End Sub

方法中的第一步是从XMLNode变量中重新获取一个引用到DOMDocument,通常用于从TreeView节点建立一个新元素,然后新元素被作为一个子节点添加到XML节点。

接着,检查TreeView中的子节点,如果含有子节点,则递进地对每一节点调用WriteTreeToDOM方法,这一过程将遍及树形控件中的所有节点。


------解决方案--------------------
我有一段自己写的代码,楼主需要可以给我消息。
------解决方案--------------------
关注..
------解决方案--------------------
tr_relation.Nodes.Clear();
XmlDocument Gdoc = new XmlDocument();
XmlDocument Cdoc = new XmlDocument();
XmlDocument Sdoc = new XmlDocument();
if (_xmldoc == null)
Gdoc.Load( "view.xml ");
else
Gdoc = _xmldoc;
TreeNode TGNode, TCNode, TSNode;
//初始化年级
foreach (XmlNode NGrade in Gdoc.DocumentElement.GetElementsByTagName( "grade "))
{
TGNode = new TreeNode(NGrade.Attributes[1].Value);
//将节点信息存储到Tag里,以下同此用法
TGNode.Tag = NGrade;
tr_relation.Nodes.Add(TGNode);
Cdoc.LoadXml(NGrade.OuterXml);
//MessageBox.Show(Cdoc.InnerXml);
//初始化班级
foreach (XmlNode NClass in Cdoc.DocumentElement.GetElementsByTagName( "class "))
{
TCNode = new TreeNode(NClass.Attributes[1].Value);
TCNode.Tag = NClass;
TGNode.Nodes.Add(TCNode);
//初始化学生
Sdoc = new XmlDocument();
Sdoc.LoadXml(NClass.OuterXml);
foreach (XmlNode NStudent in Sdoc.DocumentElement.GetElementsByTagName( "student "))
{
TSNode = new TreeNode(NStudent.Attributes[0].Value);