Отображение данных XML в элементе управления Winforms - PullRequest
2 голосов
/ 01 сентября 2008

Я хотел бы показать подробности журнала ошибок xml пользователю в приложении winforms и ищу лучший контроль для выполнения этой работы.

Данные об ошибках содержат все переменные сервера на момент возникновения ошибки. Они были отформатированы в XML-документ, который выглядит примерно так:

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

Я хотел бы прочитать эти данные из строки, в которой они хранятся, и показать их пользователю через форму окна полезным способом. XML Notepad делает отличную работу по форматированию xml, но на самом деле я его не искал, так как предпочел бы отображать детали элемента в формате Name: string .

Любые предложения или я ищу и пользовательскую реализацию?

[РЕДАКТИРОВАТЬ] Раздел данных, которые должны отображаться:

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

Ответы [ 4 ]

1 голос
/ 01 сентября 2008

Вы можете преобразовать свои данные XML, используя XSLT
Другой вариант - использовать XLinq.
Если вы хотите конкретный пример кода, предоставьте нам пример данных

EDIT : Вот пример 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 class. Он должен выдавать результат так:

Переменные сервера:
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: 196

0 голосов
/ 01 сентября 2008

См. Привязка данных XML . Используйте Visual Studio или xsd.exe для создания DataSet или классов из XSD, затем используйте System.Xml.Serialization.XmlSerializer, если необходимо превратить ваш XML в объекты / DataSet. Помассируйте предметы. Отобразить их в сетке.

0 голосов
/ 01 сентября 2008

Вы можете использовать древовидный элемент управления и использовать рекурсивный алгоритм XLinq, чтобы поместить туда данные. Я сделал это сам с помощью интерфейса, позволяющего пользователю создать собственное представление XML, и это сработало очень хорошо.

0 голосов
/ 01 сентября 2008

Вы можете попробовать использовать элемент управления DataGridView. Чтобы увидеть пример, загрузите файл XML в DevStudio, затем щелкните правой кнопкой мыши XML и выберите «Просмотр таблицы данных». Чтобы использовать его, вам необходимо прочитать документацию по API для элемента управления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...