在 Winforms 控件中显示 XML 数据
-
09-06-2019 - |
题
我想在 winforms 应用程序中向用户显示 xml 错误日志的详细信息,并且正在寻找完成这项工作的最佳控件。
错误数据包含错误发生时的所有服务器变量。这些已被格式化为 XML 文档,其效果如下:
<error>
<serverVariables>
<item>
<value>
</item>
</serverVariables>
<queryString>
<item name="">
<value string="">
</item>
</queryString>
</error>
我想从存储的字符串中读取这些数据,并通过 Windows 窗体以有用的方式将其显示给用户。XML 记事本在格式化 xml 方面做得很酷,但这并不是我真正想要的,因为我更愿意在 姓名 :细绳 格式。
有什么建议或者我正在寻找自定义实现吗?
[编辑] 需要显示的数据部分:
<?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>
解决方案
您可以使用以下方法转换 XML 数据 XSLT
另一种选择是使用 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>
您可以使用以下方式应用此转换 Xsl编译转换 班级。它应该给出如下输出:
服务器变量:
ALL_HTTP:HTTP_CONNECTION:关闭 HTTP_USER_AGENT:Mozilla/4.0(兼容 MSIE 6.0;Windows NT 5.1;SV1)
授权类型:
HTTPS:关闭
HTTPS_KEYSIZE:
HTTP_USER_AGENT:Mozilla/4.0(兼容;MSIE 6.0;Windows NT 5.1;S)查询字符串项:
时间:196
其他提示
您可以使用树视图控件并使用递归 XLinq 算法将数据放入其中。我自己已经通过一个接口实现了这一点,允许用户构建自定义 XML 表示形式,并且效果非常好。
看 XML 数据绑定。使用 Visual Studio 或 xsd程序 从 XSD 生成数据集或类,然后使用 System.Xml.Serialization.XmlSerializer
如果需要将 XML 转换为对象/数据集。按摩物体。将它们显示在网格中。
您可以尝试使用 DataGridView
控制。要查看示例,请在 DevStudio 中加载 XML 文件,然后右键单击 XML 并选择“查看数据网格”。您需要阅读该控件的 API 文档才能使用它。