在文本框中的树视图中显示 XML 架构数据 [英] Display XML schema data in treeview in a textbox

查看:28
本文介绍了在文本框中的树视图中显示 XML 架构数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是这个项目的新手.它在 C# 中的 Visual Studio 2010 上.我试图在带有树视图的文本框中显示此 XML 模式.我在将其转换为树视图时遇到问题.

<块引用>

 DataSet dsM= new DataSet("M");string filePath = @"C:\Documents and Settings\Administrator\Desktop\M.xsd";dsM.ReadXml(filePath);System.IO.StringWriter swXML = new System.IO.StringWriter();dsM.WriteXmlSchema(swXML);textBox.Text = swXML.ToString();

解决方案

using System;使用 System.Windows.Forms;使用 System.Xml;公共类 XmlTreeDisplay : System.Windows.Forms.Form{私有 System.Windows.Forms.TreeView treeXml = new TreeView();公共 XmlTreeDisplay() {treeXml.Nodes.Clear();this.Controls.Add(treeXml);//加载 XML 文档XmlDocument doc = new XmlDocument();string filePath = @"C:\Documents and Settings\Administrator\Desktop\M.xsd";尝试 {doc.Load(filePath);}catch(异常错误){MessageBox.Show(err.Message);返回;}ConvertXmlNodeToTreeNode(doc, treeXml.Nodes);treeXml.Nodes[0].ExpandAll();}私有无效 ConvertXmlNodeToTreeNode(XmlNode xmlNode,TreeNodeCollection 树节点) {TreeNode newTreeNode = treeNodes.Add(xmlNode.Name);开关(xmlNode.NodeType){案例 XmlNodeType.ProcessingInstruction:案例 XmlNodeType.XmlDeclaration:newTreeNode.Text = "<?"+ xmlNode.Name + " " +xmlNode.Value + "?>";休息;案例 XmlNodeType.Element:newTreeNode.Text = "<"+ xmlNode.Name + ">";休息;案例 XmlNodeType.Attribute:newTreeNode.Text = "属性:" + xmlNode.Name;休息;案例 XmlNodeType.Text:案例 XmlNodeType.CDATA:newTreeNode.Text = xmlNode.Value;休息;案例 XmlNodeType.Comment:newTreeNode.Text = "<!--" + xmlNode.Value + "-->";休息;}如果(xmlNode.Attributes != null){foreach(xmlNode.Attributes 中的 XmlAttribute 属性){ConvertXmlNodeToTreeNode(attribute, newTreeNode.Nodes);}}foreach(xmlNode.ChildNodes 中的 XmlNode childNode){ConvertXmlNodeToTreeNode(childNode, newTreeNode.Nodes);}}公共静态无效主(){Application.Run(new XmlTreeDisplay());}}

修改它以满足您的需要...

(反过来,将 TreeView 转换为 XML,这里有一个很好的演示 这里不必重复)

I am new to this project. It is on visual studio 2010 in C#. I am trying to show this XML schema in a textbox with a treeview. I have problem making it into a treeview.

            DataSet dsM= new DataSet("M");
            string filePath = @"C:\Documents and Settings\Administrator\Desktop\M.xsd";
            dsM.ReadXml(filePath);
            System.IO.StringWriter swXML = new System.IO.StringWriter();
            dsM.WriteXmlSchema(swXML);
            textBox.Text = swXML.ToString();

解决方案

using System;
using System.Windows.Forms;
using System.Xml;

public class XmlTreeDisplay : System.Windows.Forms.Form{
    private System.Windows.Forms.TreeView treeXml = new TreeView();

    public XmlTreeDisplay() {
        treeXml.Nodes.Clear();
        this.Controls.Add(treeXml);
        // Load the XML Document
        XmlDocument doc = new XmlDocument();
        string filePath = @"C:\Documents and Settings\Administrator\Desktop\M.xsd";

        try {
            doc.Load(filePath);
        }catch (Exception err) {

            MessageBox.Show(err.Message);
            return;
        }

        ConvertXmlNodeToTreeNode(doc, treeXml.Nodes);
        treeXml.Nodes[0].ExpandAll();
    }

    private void ConvertXmlNodeToTreeNode(XmlNode xmlNode, 
      TreeNodeCollection treeNodes) {

        TreeNode newTreeNode = treeNodes.Add(xmlNode.Name);

        switch (xmlNode.NodeType) {
            case XmlNodeType.ProcessingInstruction:
            case XmlNodeType.XmlDeclaration:
                newTreeNode.Text = "<?" + xmlNode.Name + " " + 
                  xmlNode.Value + "?>";
                break;
            case XmlNodeType.Element:
                newTreeNode.Text = "<" + xmlNode.Name + ">";
                break;
            case XmlNodeType.Attribute:
                newTreeNode.Text = "ATTRIBUTE: " + xmlNode.Name;
                break;
            case XmlNodeType.Text:
            case XmlNodeType.CDATA:
                newTreeNode.Text = xmlNode.Value;
                break;
            case XmlNodeType.Comment:
                newTreeNode.Text = "<!--" + xmlNode.Value + "-->";
                break;
        }

        if (xmlNode.Attributes != null) {
            foreach (XmlAttribute attribute in xmlNode.Attributes) {
                ConvertXmlNodeToTreeNode(attribute, newTreeNode.Nodes);
            }
        }
        foreach (XmlNode childNode in xmlNode.ChildNodes) {
            ConvertXmlNodeToTreeNode(childNode, newTreeNode.Nodes);
        }
    }
    public static void Main(){
       Application.Run(new XmlTreeDisplay());
    }
}

modify this to suit your needs...

(to do the reverse, convert a TreeView to XML, here is a nice demonstration not necessary repeating here)

这篇关于在文本框中的树视图中显示 XML 架构数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆