在 Winforms 控件中显示 XML 数据

     2023-04-12     266

关键词:

【中文标题】在 Winforms 控件中显示 XML 数据【英文标题】:Displaying XML data in a Winforms control 【发布时间】:2010-09-07 10:42:02 【问题描述】:

我想在 winforms 应用程序中向用户显示 xml 错误日志的详细信息,并且正在寻找最佳控制来完成这项工作。

错误数据包含发生错误时的所有服务器变量。这些已被格式化为 XML 文档,看起来类似于:

<error>
    <serverVariables>
        <item>
            <value>
        </item>
    </serverVariables>
    <queryString>
        <item name="">
            <value string=""> 
        </item>
    </queryString>      
</error>

我想从存储它的字符串中读取这些数据,并以一种有用的方式通过 Windows 窗体将其显示给用户。 XML 记事本在格式化 xml 方面做得很好,但并不是我真正想要的,因为我宁愿以 Name : string 格式显示项目详细信息。

任何建议或我正在寻找和自定义实现?

[EDIT] 需要显示的一段数据:

<?xml version="1.0" encoding="utf-8"?>
<error host="WIN12" type="System.Web.HttpException" message="The file '' does not exist." source="System.Web" detail="System.Web.HttpException: The file '' does not exist. at System.Web.UI.Util.CheckVirtualFileExists(VirtualPath virtualPath) at" time="2008-09-01T07:13:08.9171250+02:00" statusCode="404">
  <serverVariables>
    <item name="ALL_HTTP">
      <value string="HTTP_CONNECTION:close HTTP_USER_AGENT:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) " />
    </item>
    <item name="AUTH_TYPE">
      <value string="" />
    </item>
    <item name="HTTPS">
      <value string="off" />
    </item>
    <item name="HTTPS_KEYSIZE">
      <value string="" />
    </item>
    <item name="HTTP_USER_AGENT">
      <value string="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)" />
    </item>
  </serverVariables>
  <queryString>
    <item name="tid">
      <value string="196" />
    </item>
  </queryString>
</error>

【问题讨论】:

【参考方案1】:

您可以使用XSLT转换您的 XML 数据 另一种选择是使用 Xlinq。 如果您想要具体的代码示例,请向我们提供示例数据

编辑: 这是您的 XML 文件的示例 XSLT 转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>
    <xsl:template match="//error/serverVariables">
      <xsl:text>Server variables:
      </xsl:text>
      <xsl:for-each select="item">
        <xsl:value-of select="@name"/>:<xsl:value-of select="value/@string"/>
        <xsl:text>
        </xsl:text>
      </xsl:for-each>
    </xsl:template>
    <xsl:template match="//error/queryString">
      <xsl:text>Query string items:
      </xsl:text>
      <xsl:for-each select="item">
        <xsl:value-of select="@name"/>:<xsl:value-of select="value/@string"/>
        <xsl:text>
        </xsl:text>
      </xsl:for-each>
    </xsl:template>
</xsl:stylesheet>

您可以使用XslCompiledTransform 类应用此转换。 它应该给出这样的输出:

服务器变量: ALL_HTTP:HTTP_CONNECTION:close HTTP_USER_AGENT:Mozilla/4.0(兼容 MSIE 6.0;Windows NT 5.1;SV1) AUTH_TYPE: HTTPS:关闭 HTTPS_KEYSIZE: HTTP_USER_AGENT:Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;S)

查询字符串项: 时间:196

【讨论】:

【参考方案2】:

您可以使用树视图控件并使用递归 Xlinq 算法将数据放入其中。我自己通过一个界面完成了这项工作,该界面允许用户构建自定义 XML 表示,并且效果非常好。

【讨论】:

【参考方案3】:

见XML data binding。 使用 Visual Studio 或 xsd.exe 从 XSD 生成数据集或类,然后在需要时使用 System.Xml.Serialization.XmlSerializer 将您的 XML 转换为对象/数据集。按摩物体。在网格中显示它们。

【讨论】:

【参考方案4】:

您可以尝试使用DataGridView 控件。要查看示例,请在 DevStudio 中加载一个 XML 文件,然后右键单击 XML 并选择“查看数据网格”。您需要阅读该控件的 API 文档才能使用它。

【讨论】:

自定义 WinForms ErrorProvider 以在控件条目中显示其图标

】自定义WinFormsErrorProvider以在控件条目中显示其图标【英文标题】:CustomizingWinFormsErrorProvidertodisplayitsiconinsidecontrol\'sentry【发布时间】:2010-11-1103:52:07【问题描述】:我有一些自定义/用户控件,在大多数情况下都有标签和条目... 查看详情

在winforms c#中自动调整项目/控件的大小显示错误

】在winformsc#中自动调整项目/控件的大小显示错误【英文标题】:Autoresizingitems/controlsinwinformsc#showingerror【发布时间】:2022-01-0503:41:51【问题描述】:我一直在尝试让我的windows窗体应用程序自动调整大小,即当用户调整应用程序... 查看详情

Flash 视频在 WinForms WebBrowser 控件中显示不稳定

】Flash视频在WinFormsWebBrowser控件中显示不稳定【英文标题】:FlashVideoDisplayingWonkyinWinFormsWebBrowserControl【发布时间】:2011-12-0510:56:59【问题描述】:这就是问题所在。我正在为我3岁的孩子制作一个网络浏览器,这样我就可以指定... 查看详情

如何在 C# Winforms 的下拉列表控件中获取数据源名称

】如何在C#Winforms的下拉列表控件中获取数据源名称【英文标题】:HowtogettheDataSourcenameindropdownlistcontrolinC#Winforms【发布时间】:2014-01-0310:52:59【问题描述】:您好,我正在开发一个应用程序来将数据从一个系统检索到另一个远程... 查看详情

Winforms UserControl 显示具有反转颜色的矩形

】WinformsUserControl显示具有反转颜色的矩形【英文标题】:WinformsUserControlshowsrectangleswithInvertedColors【发布时间】:2009-04-2708:32:34【问题描述】:在Winforms应用程序(C#2、FX2.0、VC2008)中,我使用面板派生控件来显示自定义控件。控... 查看详情

在 C# (WinForms) 中拦截应用程序中所有控件的单击事件

】在C#(WinForms)中拦截应用程序中所有控件的单击事件【英文标题】:InterceptingclickeventforallcontrolsinanappinC#(WinForms)【发布时间】:2011-05-1520:24:01【问题描述】:我想制作一个应用程序来拦截我应用程序所有形式的所有UI事件并将它... 查看详情

在 WebBrowser 控件 WinForms 中使用 Chrome 引擎

】在WebBrowser控件WinForms中使用Chrome引擎【英文标题】:UseChromeengineinWebBrowsercontrolWinForms【发布时间】:2012-04-1613:08:42【问题描述】:可以在WindowsForms的WebBrowser控件中使用ChromeWebBrowserwebkit引擎吗?【问题讨论】:***.com/questions/2141... 查看详情

Winforms 中的数据绑定

】Winforms中的数据绑定【英文标题】:DatabindinginWinforms【发布时间】:2011-12-0114:32:06【问题描述】:我在VS2010中有一个数据输入WinformsApp。连同连接到SQLCompact数据库的实体数据模型(.edmx)。在这个数据库中,我有一个要插入的表Tic... 查看详情

为啥在 C# Winforms 中控件停靠到其父级时,设计器设置了控件的“大小”属性?

】为啥在C#Winforms中控件停靠到其父级时,设计器设置了控件的“大小”属性?【英文标题】:Whyisthe"Size"propertyofacontrolsetbythedesignerwhenthecontrolisdockedtoitsparentinC#Winforms?为什么在C#Winforms中控件停靠到其父级时,设计器设置... 查看详情

在.NET(Winforms)中的表单中居中控件?

】在.NET(Winforms)中的表单中居中控件?【英文标题】:Centeringcontrolswithinaformin.NET(Winforms)?【发布时间】:2010-10-0405:35:43【问题描述】:我正在尝试将固定大小的控件置于表单的中心。出于兴趣,有没有一种不愚蠢的方法?我真... 查看详情

C# WinForms 有滑块控件吗?

】C#WinForms有滑块控件吗?【英文标题】:DoesC#WinFormshaveaslidercontrol?【发布时间】:2011-08-1016:06:11【问题描述】:如果C#WinForms有滑块控件,有人可以指导我吗?我看到WPF有它,但它没有在WinForms中显示给我,这可能是什么问题?... 查看详情

如何在 Winforms 中显示“正在加载...请稍候”消息以获取长加载表单?

】如何在Winforms中显示“正在加载...请稍候”消息以获取长加载表单?【英文标题】:HowdoIshowa"Loading...pleasewait"messageinWinformsforalongloadingform?【发布时间】:2010-12-2710:50:14【问题描述】:我有一个非常慢的表单,因为表单... 查看详情

在 winforms 中使用控件(链接标签、树视图)

】在winforms中使用控件(链接标签、树视图)【英文标题】:workingwithcontrols(linklabels,treeview)inwinforms【发布时间】:2011-03-2209:07:18【问题描述】:我在面板和树视图上添加了一个面板和两个LinkLabel。现在在panel_Paint事件中,我希望... 查看详情

如何在 winforms 设计器中访问继承的控件

】如何在winforms设计器中访问继承的控件【英文标题】:Howtoaccessinheritedcontrolsinthewinformsdesigner【发布时间】:2010-11-0523:44:41【问题描述】:我正在制作一些控件,它们都必须具有相同的外观和一些共同的行为,尽管它们适用于不... 查看详情

如何在winforms设计器中公开用户控件的整个子控件

】如何在winforms设计器中公开用户控件的整个子控件【英文标题】:Howtoexposewholesubcontrolofusercontrolatwinformsdesigner【发布时间】:2012-10-0810:12:20【问题描述】:例如我想创建一个包含标签和文本框的用户控件(Windows窗体)。我想将... 查看详情

在 winforms 中获取控件的父级

】在winforms中获取控件的父级【英文标题】:GetParentsofaControlinwinforms【发布时间】:2013-05-0921:43:05【问题描述】:我在这个Panel2和这个Panel3里面有Panel1...所以想象一下Panel1->Panel2->Panel3->button1那么怎样才能得到这样的路径字... 查看详情

我可以在 WinForms 应用程序中使用哪个向导控件?

】我可以在WinForms应用程序中使用哪个向导控件?【英文标题】:WhichwizardcontrolcanIuseinaWinFormsapplication?【发布时间】:2011-06-2415:39:57【问题描述】:我一直在寻找可以在.NET3.5下的Windows应用程序中使用的类似场景的向导(带有Next/... 查看详情

如何在更新数据源时让绑定的 winforms 控件刷新?

】如何在更新数据源时让绑定的winforms控件刷新?【英文标题】:HowdoIgetboundwinformscontrolstorefreshwhentheirdatasourceisupdated?【发布时间】:2012-04-0819:27:57【问题描述】:我对使用C#(但不是C#本身)和数据绑定的整个概念处理数据库非... 查看详情