How to show Xml data in the winform in the XML fashion?

前端 未结 3 1749
甜味超标
甜味超标 2021-02-08 10:57

My winform application communicates with the web service. For some requirement, I need to present the web service response in the XML format in the winform application.

3条回答
  •  半阙折子戏
    2021-02-08 11:58

    Make use of TreeView control

    Here is working code to display xml on treeview :

    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();
            try
            {
                doc.LoadXml("texttextg99999");
                //doc.Load("");
            }
            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 = "";
                    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 = "";
                    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());
        }
    }
    

提交回复
热议问题