วิธีการค้นหา และแทนอักขระพิเศษในแฟ้ม XML กับ Visual .NET c#

ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ

ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:316063
บทความนี้ถูกเก็บถาวรแล้วเนื้อหาของบทความจึงถูกนำเสนอ "ตามลักษณะที่เป็น" และจะไม่มีการปรับปรุงข้อมูลอีก
สรุป
บทความนี้อธิบายวิธีการแทนอักขระพิเศษในแฟ้ม Extensible Markup ภาษา (XML) โดยใช้ Visual .NET c#

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

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

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


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

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

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

ตรวจสอบว่า คุณต้องแทนอักขระพิเศษ

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

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

ต้องการ: แฟ้ม 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. สร้างโปรแกรมประยุกต์.NET c# Visual และจากนั้น ใส่รหัส

สร้างแฟ้ม 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 .NET c#

  1. สร้างโปรแกรมประยุกต์ Visual c# .NET Windows ใหม่เป็นดังนี้:
    1. เริ่ม Microsoft Visual Studio .NET
    2. ในการแฟ้ม:เมนู ให้ชี้ไปที่ใหม่แล้ว คลิกProject.
    3. ในการโครงการใหม่กล่องโต้ตอบ คลิกแสดงโครงการ c#ภายใต้ชนิดโครงการแล้ว คลิกแอพลิเคชันของ windowsภายใต้แม่แบบ.
  2. ลากตัวกล่องข้อความตัวควบคุม ทั้งสองปุ่มตัวควบคุม และ aDataGridควบคุมจากกล่องเครื่องมือในการเริ่มต้นฟอร์มของคุณ Form1.cs
  3. ตั้งค่านี้multilineคุณสมบัตินี้กล่องข้อความเมื่อต้องการTrue.
  4. นำเข้า namespaces ที่ต่อไปนี้:
    using System.Xml;using System.IO;using System.Data.SqlClient;					
  5. เพิ่มรหัสต่อไปนี้หลังจากหลักฟังก์ชัน:
    string filepath = "C:\\Customers.xml";private void ReplaceSpecialChars(long linenumber)        {            System.IO.StreamReader strm;            string strline;            string strreplace = " ";            string tempfile = "C:\\Temp.xml";            try            {                System.IO.File.Copy(filepath,tempfile,true);            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }            StreamWriter strmwriter = new StreamWriter(filepath);            strmwriter.AutoFlush = true;            strm = new StreamReader(tempfile);            long i  = 0;            while (i < linenumber - 1)            {                strline = strm.ReadLine();                strmwriter.WriteLine(strline);                i = i + 1;            }            strline = strm.ReadLine();            Int32 lineposition;		            lineposition = strline.IndexOf("&");            if (lineposition > 0)             {                strreplace = "&amp;";            }            else            {                lineposition = strline.IndexOf("<",1);                if (lineposition > 0 )                {                    strreplace = "<";                }            }            strline = strline.Substring(0, lineposition - 1) + strreplace + strline.Substring(lineposition + 1);            strmwriter.WriteLine(strline);            strline = strm.ReadToEnd();            strmwriter.WriteLine(strline);            strm.Close();            strm = null;            strmwriter.Flush();            strmwriter.Close();            strmwriter = null;        }		        public XmlDocument LoadXMLDoc()         {        XmlDocument xdoc;        long lnum;		        try        {            xdoc = new XmlDocument();            xdoc.Load(filepath);        }        catch (XmlException ex)        {            MessageBox.Show(ex.Message);            lnum = ex.LineNumber;            ReplaceSpecialChars(lnum);            xdoc = LoadXMLDoc();        }    return (xdoc);    }					
  6. เพิ่มรหัสต่อไปนี้ไปButton1_Clickเหตุการณ์:
    XmlDocument xmldoc = new XmlDocument();        xmldoc = LoadXMLDoc();        XmlNode nextnode;         nextnode = xmldoc.FirstChild.NextSibling;        this.textBox1.Text = nextnode.OuterXml.ToString();					
  7. เพิ่มรหัสต่อไปนี้ไปButton2_Clickเหตุการณ์:
    DataSet ds = new DataSet();            XmlDocument xdoc = new XmlDocument();            SqlConnection cnNwind = new SqlConnection("Data source=myServerName;user id=myUser;Password=myPassword;Initial catalog=Northwind;");            SqlDataAdapter daCustomers = new SqlDataAdapter("Select customerid,companyname,contactname, region from customers where region='WY'", cnNwind);            string filepath = "C:\\Customers.xml";            try            {                daCustomers.Fill(ds, "Customers");                this.dataGrid1.DataSource = ds.Tables["Customers"];                ds.WriteXml(filepath);                xdoc.Load(filepath);                XmlNode nextnode;                 nextnode = xdoc.FirstChild.NextSibling;                textBox1.Text = nextnode.OuterXml.ToString();            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);            }					
  8. เปลี่ยนแปลงคุณสมบัติในนั้นSqlConnectionสายอักขระการเชื่อมต่อตามความจำเป็นสำหรับสภาพแวดล้อมการทำงานของคุณ
  9. สร้าง และเรียกใช้โครงการ
  10. คลิกbutton1.

    ข้อผิดพลาดที่คุณได้รับจะสอดคล้องกับคำอธิบายของข้อผิดพลาดที่ได้อธิบายไว้ในนั้นต้องการ: มีแฟ้ม XML มีอักขระพิเศษส่วน ข้อมูล XML ปรากฏขึ้นในการกล่องข้อความ; ampersand จะถูกแทนที่ด้วย
  11. คลิกButton2.

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

คำเตือน: บทความนี้ได้รับการแปลโดยอัตโนมัติ

คุณสมบัติ

รหัสบทความ: 316063 - การตรวจสอบครั้งสุดท้าย: 12/07/2015 08:39:15 - ฉบับแก้ไข: 5.0

Microsoft Visual C# .NET 2003 Standard Edition, Microsoft Visual C# .NET 2002 Standard Edition, Microsoft .NET Framework 1.0, Microsoft .NET Framework 1.1

  • kbnosurvey kbarchive kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB316063 KbMtth
คำติชม