سؤال

أرغب في عرض تفاصيل سجل أخطاء 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>
هل كانت مفيدة؟

المحلول

يمكنك تحويل بيانات 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 فصل.يجب أن يعطي الإخراج مثل هذا:

متغيرات الخادم:
ALL_HTTP:HTTP_CONNECTION:إغلاق HTTP_USER_AGENT:Mozilla/4.0 (متوافق مع MSIE 6.0؛ويندوز إن تي 5.1؛SV1)
AUTH_TYPE:
HTTPS: إيقاف
HTTPS_KEYSIZE:
HTTP_USER_AGENT:Mozilla/4.0 (متوافق؛مسي 6.0؛ويندوز إن تي 5.1؛إس)

عناصر سلسلة الاستعلام:
الدار:196

نصائح أخرى

يمكنك استخدام عنصر تحكم Treeview واستخدام خوارزمية XLinq العودية لوضع البيانات هناك.لقد فعلت ذلك بنفسي من خلال واجهة تسمح للمستخدم بإنشاء تمثيل XML مخصص وقد نجح الأمر بشكل جيد.

يرى ربط بيانات XML.استخدم فيجوال ستوديو أو xsd.exe لإنشاء مجموعة بيانات أو فئات من XSD، ثم استخدمها System.Xml.Serialization.XmlSerializer إذا لزم الأمر لتحويل XML الخاص بك إلى كائنات/DataSet.تدليك الأشياء.عرضها في الشبكة.

يمكنك تجربة استخدام DataGridView يتحكم.لرؤية مثال، قم بتحميل ملف XML في DevStudio ثم انقر بزر الماوس الأيمن على XML وحدد "عرض شبكة البيانات".ستحتاج إلى قراءة وثائق واجهة برمجة التطبيقات (API) الموجودة على عنصر التحكم لاستخدامها.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top