如何以XML方式在winform中显示Xml数据?

我的winform应用程序与Web服务通信。 对于某些要求,我需要在winform应用程序中以XML格式显示Web服务响应。

我可以将响应类型(类)实例序列化为XML字符串。 但是当我在富文本框中显示该字符串时,它显然显示为连续字符串; 而不是如下所示的XML。

 -  -  0 Loggerr -1 U MyLogger    -  -  0 Logger2 -1 U MyLogger2     

这里, UserServiceAccesses是具有UserServiceAccess类型属性的类。 然后UserServiceAccess具有ServiceClientPermissions类型的属性

我该怎么做? 它可以是任何forms(树,表,文本等),但它应该是可读的XML。 由于我们从应用程序调用了许多Web方法,因此每次XML结构都会有所不同,因此我们无法确定模式。

使用TreeView控件

这是在treeview上显示xml的工作代码:

 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()); } } 

尝试将缩进应用于xmlText,如:

 XDocument xDocument = XDocument.Parse(xmlText); myRichTextBox.Text = xDocument.ToString();//ToString will format xml string with indent //as XDocument class overrides ToString and return xml with indent 

一种简单的方法是在表单中嵌入Internet Explorer ActiveX控件并将XML加载到其中。 它将与IE的XML默认样式表一起显示。
类似于在网页中使用iframe元素。