كيفية القيام بما يلي: تحويل XML عن طريق استخدام LINQ (Visual Basic)

حرفي XML يجعل من السهل قراءة XML من مصدر واحد و تحويله إلى تنسيق XML جديد. يمكن الاستفادة من استعلامات LINQ لاسترداد المحتوى للتحويل, أو تغيير المحتوى في مستند موجود إلى تنسيق XML جديد.

المثال في هذا الموضوع يقوم بتحويل المحتوى من مستند مصدر XML إلى HTML ليتم عرضه في مستعرض.

ملاحظة

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

لـتحويل مستند XML

  1. في ‏‫Visual Studio, قم بإنشاء مشروع Visual Basic جديد في تطبيق وحدة تحكم قالب المشروع.

  2. انقر مزودجا الملف Module1.vb الذي تم إنشاؤه في المشروع لتعديل التعليمات البرمجية لـ Visual Basic. أضف التعليمات البرمجية التالية إلى Sub Main من Module1 الوحدة النمطية. تقوم التعليمات البرمجية بإنشاء مستند XML المصدر كـ XDocument الكائن.

    Dim catalog = 
      <?xml version="1.0"?>
        <Catalog>
          <Book id="bk101">
            <Author>Garghentini, Davide</Author>
            <Title>XML Developer's Guide</Title>
            <Price>44.95</Price>
            <Description>
              An in-depth look at creating applications
              with <technology>XML</technology>. For 
              <audience>beginners</audience> or 
              <audience>advanced</audience> developers.
            </Description>
          </Book>
          <Book id="bk331">
            <Author>Spencer, Phil</Author>
            <Title>Developing Applications with Visual Basic .NET</Title>
            <Price>45.95</Price>
            <Description>
              Get the expert insights, practical code samples, 
              and best practices you need 
              to advance your expertise with <technology>Visual 
              Basic .NET</technology>. 
              Learn how to create faster, more reliable applications
              based on professional, 
              pragmatic guidance by today's top <audience>developers</audience>.
            </Description>
          </Book>
        </Catalog>
    

    كيفية القيام بما يلي: تحميل XML من ملف أو سلسلة أو الدفق (Visual Basic).

  3. بعد التعليمات البرمجية لإنشاء مستند XML المصدر قم بإضافة التعليمات البرمجية التالية لاسترداد كافة عناصر<book> من الكائن ثم تحويلها الى مستند HTML. قائمة عناصر <book> يتم إنشاؤها باستخدام استعلام LINQ الذي يقوم بإرجاع مجموعة منXElement الكائنات التي تحتوي على HTML محولة. يمكنك استخدام التعبيرات المضمنة لوضع القيمة من مستند المصدر في تنسيق XML الجديد.

    مستند HTML الناتج يتم كتابته إلى ملف باستخدام Save الأسلوب.

    Dim htmlOutput = 
      <html>
        <body>
          <%= From book In catalog.<Catalog>.<Book> 
              Select <div>
                       <h1><%= book.<Title>.Value %></h1>
                       <h3><%= "By " & book.<Author>.Value %></h3>
                        <h3><%= "Price = " & book.<Price>.Value %></h3>
                        <h2>Description</h2>
                        <%= TransformDescription(book.<Description>(0)) %>
                        <hr/>
                      </div> %>
        </body>
      </html>
    
    htmlOutput.Save("BookDescription.html")
    
  4. بعدSub Main من Module1، قم بإضافة أسلوب جديد (Sub) لتحويل عقدة <Description> الى تنسيق HTML المحدد. يتم استدعاء هذا الأسلوب بواسطة التعليمات البرمجية في الخطوة السابقة وتستخدم للمحافظة على تنسيق عناصر الـ <Description>.

    يستبدل هذا الأسلوب العناصر الفرعية لعنصر <Description> مع HTML. أسلوب ReplaceWith يستخدم للمحافظة على موقع العنصر الفرعي. المحتوى المحول لعنصر <Description> يتم اضافته عنصر (<p>) فقرة HTML. خاصية Nodes تستخدم لاسترداد المحتويات المحولة لعنصر <Description>. ويضمن ذلك أن العناصر الفرعية يتم اضافتها في المحتوى المحول.

    قم بإضافة التعليمات البرمجية التالية بعد Sub Main لـ Module1.

    Public Function TransformDescription(ByVal desc As XElement) As XElement
    
      ' Replace <technology> elements with <b>.
      Dim content = (From element In desc...<technology>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<b><%= content(i).Value %></b>)
        Next
      End If
    
      ' Replace <audience> elements with <i>.
      content = (From element In desc...<audience>).ToList()
    
      If content.Count > 0 Then
        For i = 0 To content.Count - 1
          content(i).ReplaceWith(<i><%= content(i).Value %></i>)
        Next
      End If
    
      ' Return the updated contents of the <Description> element.
      Return <p><%= desc.Nodes %></p>
    End Function
    
  5. احفظ التغييرات التي قمت بإجرائها.

  6. اضغط F5 لتشغيل التعليمات البرمجية. المستند المحفوظ الناتج سوف يشابه ما يلي:

    <?xml version="1.0"?>
    <html>
      <body>
        <div>
          <h1>XML Developer's Guide</h1>
          <h3>By Garghentini, Davide</h3>
          <h3>Price = 44.95</h3>
          <h2>Description</h2>
          <p>
            An in-depth look at creating applications
            with <b>XML</b>. For 
            <i>beginners</i> or 
            <i>advanced</i> developers.
          </p>
          <hr />
        </div>
        <div>
          <h1>Developing Applications with Visual Basic .NET</h1>
          <h3>By Spencer, Phil</h3>
          <h3>Price = 45.95</h3>
          <h2>Description</h2>
          <p>
            Get the expert insights, practical code 
            samples, and best practices you need 
            to advance your expertise with <b>Visual 
            Basic .NET</b>. Learn how to create faster,
            more reliable applications based on
            professional, pragmatic guidance by today's 
            top <i>developers</i>.
          </p>
          <hr />
        </div>
      </body>
    </html>
    

راجع أيضًا:

المهام

كيفية القيام بما يلي: تحميل XML من ملف أو سلسلة أو الدفق (Visual Basic)

المبادئ

مقدمة حول LINQ في Visual Basic

موارد أخرى

حرفي XML

معالجة XML في Visual Basic

XML في Visual Basic

LINQ في Visual Basic