كيفية: تحديد موقع واستبدال أحرف خاصة في ملف XML باستخدام Visual Basic.NET

للحصول على إصدار Microsoft Visual C#.NET من هذه المقالة، راجع
316063 .
للحصول على إصدار Microsoft Visual Basic 6.0 من هذه المقالة، راجع
251354 .

ملخص

توضح هذه المقالة كيفية استبدال أحرف خاصة في أحد ملفات لغة توصيف الموسعة (XML) باستخدام Visual Basic.NET.

وصف للتقنية

XML يعرف المراجع الكيانات الخمسة التالية لأحرف خاصة إلا تفسر كجزء من لغة توصيف:




يمكنك استخدام مراجع الوحدة وحرف الهروب قوس الزاوية اليسرى والضم والمحددات الأخرى. يمكنك أيضا استخدام مراجع الأحرف الرقمية؛ يتم توسيع نطاق مباشرة عندما يتم التعرف عليها وهي تعامل كبيانات الأحرف، حيث يمكنك استخدام مراجع أحرف رقمية


إذا كان يتم تعريف أي من الكيانين التالية
  • فاتح
  • أمبير
يجب عليك تعريف هذه كالوحدات الداخلية الخاصة به النص البديل هو مرجع حرف إلى الحرف الخاص (قوس الزاوية اليسرى أو علامة الضم) الذي هو هروب؛ تهريب مزدوجة مطلوب لهذه الوحدات حيث أن الإشارات إليها نتيجة جيد.

إذا كان يتم تعريف أي من الكيانات الثلاثة التالية
  • جي تي
  • عبس
  • quot
يجب عليك تعريف هذه الكيانات كما الداخلية الخاصة به النص البديل هو واحد حرف هروب.

تحديد ما إذا كان استبدال حرف خاص مطلوباً

غير مطلوب: ملفات XML استرداد البيانات من قاعدة بيانات

عند استخدام Microsoft.NET Framework، يتم استرداد البيانات وتخزينها في مجموعة البيانات. عند كتابة البيانات من مجموعة البيانات إلى ملف XML باستخدام أسلوب WriteXml ، يتم استبدال الأحرف الخاصة المشار إليها في القسم "الملخص" مع مراجع الحرف المعنية؛ لذلك، عند كتابة ملفات XML ويتم استخدام مجموعة البيانات، أي عملية استبدال خاص مطلوب.

مطلوب: ملف XML باستخدام أحرف خاصة

في بعض الأحيان ملف XML أو بيانات XML التي تأتي من جهة أخرى استخدام هذه الأحرف المعينة؛ في هذا السيناريو، البيانات بإنشاء أخطاء عند تحميل إلى كائن XmlDocument أو كائن XmlReader .

يتم إنشاء الخطأ التالي عند مصادفة حرف العلامة:
حدث خطأ أثناء تحليل entity_name، سطر
#، ضع #.
حيث السطر # والموضع
تمثل # الموضع الدقيق للحرف الخاص.

حدث الخطأ التالي عند مواجهة قوس المثلث الأيمن:
'<' لا يمكن تضمين حرف، القيمة السداسية العشرية 0x3C، في اسم. خط #موضع
#.
في رسالة الخطأ هذه، الخط
# وموضع # يشير إلى الموضع حيث يوجد قوس الزاوية اليسرى، ولكن حيث يواجه الثاني قوس الزاوية اليسرى.

إذا كان ملف XML يحتوي على قوس المثلث الأيمن (>)، علامة اقتباس مستقيمة ('') أو علامة اقتباس أحادية (')، تتم معالجة هذه ب XmlReader والكائنات XmlDocument لاستبدال حرف واحد فقط مطلوب لهذه الأحرف.

استبدال الأحرف الخاصة

لاستبدال علامة الضم وحرف قوس الزاوية اليسرى:
  1. إنشاء ملف XML.
  2. إنشاء تطبيق Visual Basic.NET ثم قم بإدراج التعليمات البرمجية.

إنشاء ملف XML

نسخ ولصق التعليمات البرمجية التالية في "المفكرة"، ثم قم بحفظ الملف ك customers.xml:
<?xml version="1.0" standalone="yes"?><Customers>
<Customer>
<CustomerID>BLAUS</CustomerID>
<CompanyName>Blauer See Delikatessen</CompanyName>
<ContactName>Hanna Moos</ContactName>
<Region>test<ing</Region>
</Customer>
<Customer>
<CustomerID>SPLIR</CustomerID>
<CompanyName>Split Rail Beer & Ale</CompanyName>
<ContactName>Art raunschweiger</ContactName>
<Region>WY</Region>
</Customer>
</Customers>

إنشاء مشروع Visual Basic.NET

  1. إنشاء تطبيق Visual Basic.NET Windows جديدة.
  2. استخدام عملية السحب والإفلات لنقل مربع النصوعنصري تحكم زر DataGrid.
  3. تعيين خاصية مربع النص متعدد الأسطر إلى True.
  4. استيراد مساحات الأسماء التالية:
    Imports System.XmlImports System.IO
    Imports System.Data.SqlClient

  5. بعد المقطع التالي
    Inherits System.Windows.Forms.Form
    نسخ ولصق نموذج التعليمات البرمجية التالي:
     Dim filepath As String = "C:\customers.xml"Private Sub ReplaceSpecialChars(ByVal linenumber As Long)
    Dim strm As StreamReader
    Dim strline As String
    Dim strreplace As String

    Dim tempfile As String = "C:\temp.xml"
    Try
    FileCopy(filepath, tempfile)
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try

    Dim strmwriter As New StreamWriter(filepath)
    strmwriter.AutoFlush = True

    strm = New StreamReader(tempfile)


    Dim i As Long = 0
    While i < linenumber - 1
    strline = strm.ReadLine
    strmwriter.WriteLine(strline)
    i = i + 1
    End While

    strline = strm.ReadLine
    Dim lineposition As Int32
    lineposition = InStr(strline, "&")
    If lineposition > 0 Then
    strreplace = "&amp;"
    Else
    lineposition = InStr(2, strline, "<")
    If lineposition > 0 Then
    strreplace = "<"
    End If
    End If
    strline = Mid(strline, 1, lineposition - 1) + strreplace + Mid(strline, lineposition + 1)
    strmwriter.WriteLine(strline)

    strline = strm.ReadToEnd
    strmwriter.WriteLine(strline)

    strm.Close()
    strm = Nothing

    strmwriter.Flush()
    strmwriter.Close()
    strmwriter = Nothing

    End Sub

    Public Function LoadXMLDoc() As XmlDocument
    Dim xdoc As XmlDocument
    Dim lnum As Long
    Dim pos As Long
    Dim Newxml As String
    Try
    xdoc = New XmlDocument()
    xdoc.Load(filepath)
    Catch ex As XmlException
    MessageBox.Show(ex.Message)
    lnum = ex.LineNumber
    ReplaceSpecialChars(lnum)

    xdoc = LoadXMLDoc()

    End Try
    Return (xdoc)
    End Function

  6. نسخ ولصق التعليمات البرمجية التالية إلى حدث انقر Button1:
    Dim xmldoc As New XmlDocument()        xmldoc = LoadXMLDoc()
    Dim nextnode As XmlNode
    nextnode = xmldoc.FirstChild.NextSibling
    TextBox1.Text = nextnode.OuterXml

  7. نسخ ولصق التعليمات البرمجية التالية إلى حدث انقر Button2:
    Dim ds As New DataSet()        Dim xdoc As New XmlDocument()
    Dim cnNwind As New SqlConnection("Data source=myservername;user id=myuser;Password=mypassword;Initial catalog=Northwind;")
    Dim daCustomers As New SqlDataAdapter("Select customerid,companyname,contactname, region from customers where region='WY'", cnNwind)
    Dim filepath As String
    Try
    daCustomers.Fill(ds, "Customers")
    DataGrid1.DataSource = ds.Tables(0)
    ds.WriteXml("C:\Dataset.xml")
    xdoc.Load("C:\Dataset.xml")
    Dim nextnode As XmlNode
    nextnode = xdoc.FirstChild.NextSibling
    TextBox1.Text = nextnode.OuterXml.ToString
    Catch ex As Exception
    MessageBox.Show(ex.Message)
    End Try

  8. تغيير اسم الملقم واسم المستخدم وكلمة المرور للاتصال بالخادم الذي يقوم بتشغيل Microsoft SQL Server.
  9. بناء المشروع، وقم بتشغيله.
  10. انقر فوق " Button1".

    الأخطاء التي تتلقاها تتماشى مع وصف الأخطاء الموضحة في المقطع "المطلوبة: XML ملف مع الأحرف الخاصة". ثم يتم عرض بيانات XML في مربع نص; يتم استبدال العلامة
  11. انقر فوق Button2.

    في DataGrid companyname العطف وبيانات XML مع تظهر مربع نص

المراجع

للحصول على معلومات إضافية، انقر فوق رقم المقال التالي لعرضه في "قاعدة معارف Microsoft":
251354 كيفية: تحديد موقع واستبدال حرف خاص في مستند XML باستخدام Visual Basic
خصائص

رقم الموضوع: 308060 - آخر مراجعة: 18‏/01‏/2017 - المراجعة: 1

تعليقات