HOW TO: หา และแทนอักขระพิเศษในแฟ้ม XML ที่ มี Visual Basic .NET

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 308060 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการแทนอักขระพิเศษในแฟ้ม Extensible Markup ภาษา (XML) โดยใช้ Visual Basic .NET

คำอธิบายเกี่ยวกับเทคนิค

xml predefines 5 การอ้างเอ็นติตี้อิงสำหรับอักขระพิเศษที่จะมิฉะนั้นจะตีความเป็นส่วนหนึ่งของมาร์กอัปภาษา:

Character Name Entity Reference Character Reference Numeric Reference
Ampersand & & &
Left angle bracket &lt; < &#38;#60;
Right angle bracket &gt; > &#62;
Straight quotation mark &quot; " &#39;
Apostrophe &apos; ' &#34;


คุณสามารถใช้การอ้างอิงเอ็นติตี้และอักขระ escape วงเล็บมุมซ้าย ampersand และตัวคั่นอื่น ๆ คุณยังสามารถใช้อักขระตัวเลขการอ้างอิง การดังกล่าวจะถูกขยายออกทันทีเมื่อพวกเขามีรู้จัก และพวกเขาจะถือว่าเป็นข้อมูลอักขระ ดังนั้นคุณสามารถใช้การอ้างอิงของอักขระที่เป็นตัวเลข

ถ้าคุณกำลัง declaring อย่างใดอย่างหนึ่งเอนทิตีที่สองต่อไปนี้
  • lt
  • amp
คุณจำเป็นต้องประกาศเป็นข้อความแทนซึ่งมีการอ้างอิงอักขระไปเกี่ยวข้องอักขระ (วงเล็บมุมด้านซ้ายหรือ ampersand) ที่จะถูก escaped เอนทิตีภายใน escaping คู่จำเป็นสำหรับเอนทิตีเหล่านี้เพื่อให้การอ้างอิงดังกล่าวทำให้ผลลัพธ์ well-formed

ถ้าคุณกำลัง declaring ใด ๆ ของเอนทิตีที่สามแบบต่อไปนี้
  • gt
  • apos
  • quot
คุณจำเป็นต้องกำหนดค่าเหล่านี้ให้กลายเป็นค่าซึ่งมีข้อความแทนอยู่เดี่ยวในเอนทิตีภายในเป็นอักขระกำลัง escaped

ตรวจสอบว่าการเปลี่ยนสินค้าอักขระพิเศษที่จำเป็น

ไม่จำเป็นต้อง: XML แฟ้มในใดข้อมูลถูกดึงจากฐานข้อมูล

เมื่อคุณใช้ Microsoft .NET Framework ข้อมูลการดึงข้อมูลมา และเก็บไว้ในตัวชุดข้อมูล. เมื่อคุณกำลังเขียนข้อมูลจากการชุดข้อมูลไปยังแฟ้ม XML โดยใช้การWriteXmlวิธี อักขระพิเศษที่อ้างอิงถึงในส่วน "สรุป" จะถูกแทนที่ ด้วยการอ้างอิงของอักขระที่เกี่ยวข้อง ดังนั้น เมื่อคุณกำลังเขียน แฟ้ม XML และคุณกำลังใช้การชุดข้อมูลไม่มีกระบวนการแทนพิเศษที่จำเป็น

ต้องการ: มีแฟ้ม XML มีอักขระพิเศษ

ในบางครั้งแฟ้ม XML หรือข้อมูล XML ที่มาจากบุคคลอื่นอาจใช้อักขระเหล่านี้พิเศษ ในสถานการณ์สมมตินี้ ข้อมูลสร้างข้อผิดพลาดเมื่อคุณโหลดไปXmlDocumentวัตถุ หรือข้อXmlReaderวัตถุ

ข้อผิดพลาดต่อไปนี้จะสร้างขึ้นเมื่อมีพบอักขระ ampersand:
ข้อผิดพลาดเกิดขึ้นขณะกำลังแยกวิเคราะห์entity_nameเส้น#ตำแหน่ง#.
ที่บรรทัด#และตำแหน่ง#แสดงตำแหน่งที่แน่นอนของอักขระพิเศษ

ข้อผิดพลาดต่อไปนี้เกิดขึ้นเมื่อเกิดการวงเล็บมุมซ้าย:
ใน '<' character,="" hexadecimal="" value="" 0x3c,cannot="" be="" included="" in="" a="" name.="" line=""></'>#ตำแหน่ง#.
ในข้อผิดพลาดความนี้ บรรทัด#และตำแหน่ง#ไม่แสดงตำแหน่งที่มีวงเล็บมุมซ้าย แต่ที่พบวงเล็บซ้ายที่สองมุม

ถ้าแฟ้ม XML ประกอบด้วยวงเล็บมุมขวา (>), เครื่องหมายใบเสนอราคาตรง (") หรือ apostrophe ('), เหล่านี้จะจัดการโดยXmlReaderและXmlDocumentวัตถุได้เนื่องจากถูกแทนอักขระตัวเดียวเท่านั้นที่จำเป็นสำหรับการอักขระเหล่านี้

แทนอักขระพิเศษ

เมื่อต้องการแทน ampersand และอักขระวงเล็บมุมซ้าย:
  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>
				

สร้างโครงการ.NET Visual Basic

  1. Visual Basic .NET Windows ใหม่ในการสร้างโปรแกรมประยุกต์
  2. ใช้การดำเนินการลาก แล้วปล่อยเพื่อย้ายไปยังกล่องข้อความสองปุ่มตัวควบคุม และ aDataGrid.
  3. ตั้งค่านี้multilineคุณสมบัตินี้กล่องข้อความเมื่อต้องการTrue.
  4. นำเข้า namespaces ที่ต่อไปนี้:
    Imports System.Xml
    Imports 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 จะแสดงในนั้นกล่องข้อความ; ampersand จะถูกแทนที่ด้วย
  11. คลิก Button2

    ในการDataGrid,companynameมีข้อ ampersand และกล่องข้อความแสดงข้อมูล XML ด้วย

ข้อมูลอ้างอิง

สำหรับข้อมูลเพิ่มเติม โปรดคลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความในฐานความรู้ของ Microsoft::
251354HOW TO: หา และแทนอักขระพิเศษในเอกสาร XML ที่ มี Visual Basic

คุณสมบัติ

หมายเลขบทความ (Article ID): 308060 - รีวิวครั้งสุดท้าย: 19 ตุลาคม 2553 - Revision: 1.0
ใช้กับ
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
Keywords: 
kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB308060 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:308060

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com