2008-09-01 72 views
1

我想在winforms應用程序中向用戶顯示xml錯誤日誌的詳細信息,並且正在尋找最好的控件來完成這項工作。在Winforms控件中顯示XML數據

錯誤數據包含發生錯誤時的所有服務器變量。這些都被格式化成,看起來到的效果的XML文檔:我想從字符串讀取這些數據,它被保存在並通過在一個窗口形式顯示給用戶

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

有用的方法。 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> 

回答

1

您可以使用XSLT
轉換您的XML數據另一種選擇是使用XLinq。
如果你想具體的代碼示例爲我們提供了樣本數據

編輯: 這裏是一個示例XSLT轉換爲XML文件:

<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:關閉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)

查詢字符串項目:
TID:19 6

0

你可以嘗試使用DataGridView控制。要查看示例,請在DevStudio中加載XML文件,然後右鍵單擊XML並選擇「查看數據網格」。您需要閱讀控件上的API文檔才能使用它。

0

您可以使用treeview控件並使用遞歸XLinq算法將數據放在那裏。我自己用接口允許用戶構建自定義的XML表示,並且它的工作非常好。