Я хотел бы отобразить подробную информацию о XML-журнале ошибок пользователю в приложении winforms, и я ищу лучший элемент управления для выполнения этой работы.
Данные об ошибке содержат все важные переменные на момент возникновения ошибки. Они были отформатированы в XML-документ, который выглядит примерно так:
<error>
<serverVariables>
<item>
<value>
</item>
</serverVariables>
<queryString>
<item name = "">
<value string = "">
</item>
</queryString>
</error>
Я хотел бы прочитать эти данные из строки, в которой они хранятся, и отобразить их пользователю через форму Windows удобным способом. XML Notepad отлично справляется с форматированием 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>





Вы можете попробовать использовать элемент управления DataGridView. Чтобы увидеть пример, загрузите XML-файл в DevStudio, а затем щелкните правой кнопкой мыши XML и выберите «View Data Grid». Чтобы использовать этот элемент управления, вам необходимо прочитать документацию по API.
Вы можете преобразовать свои XML-данные с помощью XSLT
Другой вариант - использовать 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. Результат должен быть примерно таким:
Server variables:
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;S )Query string items:
tid:196
Вы можете использовать элемент управления treeview и использовать рекурсивный алгоритм XLinq для размещения данных там. Я сам сделал это с помощью интерфейса, позволяющего пользователю создавать собственное XML-представление, и это работало очень хорошо.
См. Связывание данных XML.
Используйте Visual Studio или xsd.exe для создания DataSet или классов из XSD, затем используйте System.Xml.Serialization.XmlSerializer, если необходимо, чтобы превратить ваш XML в объекты / DataSet. Помассируйте предметы. Отобразите их в сетке.