Frage

Ich möchte zur Anzeige von details einer xml-Fehler melden einen Benutzer in einem winforms-Anwendung und bin auf der Suche nach der besten Steuerung, die Arbeit zu tun.

Der Fehler enthält alle Daten der Server-Variablen an der Zeit, dass der Fehler aufgetreten ist.Diese formatiert wurden, werden in ein XML-Dokument, das sieht etwas zu der Wirkung von:

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

Ich möchte Lesen diese Daten aus der Zeichenfolge, die Sie gespeichert, und zeigen Sie Sie dem Benutzer über eine windows form in eine nützliche Weg.XML-Editor hat einen coolen job, der Formatierung von xml, ist aber nicht wirklich war, ich bin auf der Suche für da würde ich lieber zu anstatt Element Anzeige details in eine Name :string format.

Irgendwelche Vorschläge oder bin ich auf der Suche und eine benutzerdefinierte Implementierung?

[BEARBEITEN] EIN Abschnitt die Daten, die dargestellt werden muss:

<?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>
War es hilfreich?

Lösung

Verwandeln Sie Ihre XML-Daten mit XSLT
Eine andere option ist zu verwenden XLinq.
Wenn Sie wollen konkrete code-Beispiel bieten uns mit Probe-Daten

BEARBEITEN:hier ist ein Beispiel-XSLT-Transformation für XML-Datei:

<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>

Sie können gelten diese Transformation mit XslCompiledTransform Klasse.Es sollte eine Ausgabe wie diese:

Server-Variablen:
ALL_HTTP:HTTP_CONNECTION:close HTTP_USER_AGENT:Mozilla/4.0 (compatible MSIE 6.0;Windows NT 5.1;SV1)
AUTH_TYPE:
HTTPS:off
HTTPS_KEYSIZE:
HTTP_USER_AGENT:Mozilla/4.0 (compatible;MSIE 6.0;Windows NT 5.1;En )

Abfrage-string-Elemente:
tid:196

Andere Tipps

Sie könnte verwenden Sie ein treeview-Steuerelement und eine rekursive XLinq Algorithmus, um die Daten in es.Das hab ich getan, dass ich mich mit einer Schnittstelle, die es einem Benutzer erlauben, zu bauen up eine benutzerdefinierte XML-Darstellung und es funktionierte wirklich gut.

Finden XML-Daten Bindung.Verwenden Sie Visual Studio oder xsd.exe zu DataSet generieren oder Klassen von XSD, dann verwenden System.Xml.Serialization.XmlSerializer wenn nötig, drehen Sie Ihr XML in Objekte/DataSet.Massage der Objekte.Zeigen Sie Sie in raster.

Sie könnten versuchen, mit den DataGridView Kontrolle.Um ein Beispiel zu sehen, laden Sie eine XML-Datei in DevStudio und dann mit der rechten Maustaste auf die XML-Daten und wählen Sie "View-Data-Grid".Sie benötigen zum Lesen der API-Dokumentation auf der control, es zu benutzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top