Bagaimana menemukan dan mengganti karakter khusus dalam sebuah file XML dengan Visual C#.NET

Terjemahan Artikel Terjemahan Artikel
ID Artikel: 316063 - Melihat produk di mana artikel ini berlaku.
Perbesar semua | Perkecil semua

Pada Halaman ini

RINGKASAN

Artikel ini menjelaskan cara untuk mengganti karakter khusus dalam file Extensible Markup Language (XML) dengan menggunakan Visual C#.NET.

Deskripsi teknik

XML predefines referensi entitas lima berikut untuk karakter khusus yang akan sebaliknya ditafsirkan sebagai bagian dari markup language:

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;


Anda dapat menggunakan referensi entitas dan karakter untuk melarikan diri braket sudut kiri, ampersand dan delimiters lainnya. Anda juga dapat menggunakan referensi karakter numerik. Karakter numerik referensi diperluas segera ketika mereka diakui. Selain itu, karena karakter numerik referensi diperlakukan sebagai karakter data, Anda dapat menggunakan referensi karakter numerik

Jika Anda menyatakan salah satu dari dua entitas berikut:
  • &amp;
Anda harus menyatakan mereka sebagai entitas internal yang penggantian teks adalah referensi karakter untuk karakter masing-masing (braket sudut kiri atau ampersand) yang menjadi lolos. Ini melarikan diri ganda diperlukan untuk entitas ini sehingga rujukan kepada mereka menghasilkan hasil well-formed.

Jika Anda menyatakan salah satu entitas tiga berikut:
  • >
  • '
  • "
Anda harus menyatakan mereka sebagai entitas internal yang penggantian teks adalah satu karakter yang menjadi lolos.

Menentukan apakah Anda harus mengganti karakter khusus

Tidak diperlukan: file XML di mana data yang Diperoleh dari database

Ketika Anda menggunakan Microsoft.NET Framework, data yang diperoleh dan disimpan dalam DataSet objek. Ketika Anda menulis data dari DataSet untuk sebuah file XML dengan menggunakan WriteXml metode, karakter khusus yang dirujuk dalam bagian "Ringkasan" diganti dengan karakter masing-masing referensi. Oleh karena itu, ketika Anda menulis file XML, dan jika Anda menggunakan DataSet, tidak ada proses penggantian khusus diperlukan.

Data diperlukan: File XML yang berisi data XML pihak ketiga dengan karakter khusus

Kadang-kadang XML file atau XML data yang berasal dari pihak ketiga dapat menggunakan karakter khusus ini. Dalam skenario ini, data menghasilkan kesalahan ketika Anda memuat itu ke XmlDocument objek atau XmlReader objek.

Anda menerima pesan galat berikut ketika karakter ampersand mengalami:
Terjadi galat ketika parsing entity_name, baris #, posisi #.
di mana baris # dan posisi # mewakili posisi tepat karakter khusus.

Anda menerima pesan galat berikut ketika braket sudut kiri mengalami:
The '<' character,="" hexadecimal="" value="" 0x3c,cannot="" be="" included="" in="" a="" name.=""></'> #, posisi #.
Dalam pesan kesalahan ini, baris # dan posisi # tidak menunjukkan posisi di mana braket sudut kiri ada, tetapi di mana kedua braket sudut kiri ditemui.

Jika file XML yang berisi braket sudut kanan (>), tanda kutip langsung ("), atau apostrophe ('), XmlReader dan XmlDocument objek menangani objek ini karena karakter ini memerlukan hanya satu karakter penggantian.

Mengganti karakter khusus

Untuk menggantikan ampersand dan karakter braket sudut kiri:
  1. Buat XML file.
  2. Menciptakan Visual C#.NET aplikasi, dan kemudian masukkan kode.

Buat XML file

Copy dan paste kode berikut ke Notepad, dan kemudian simpan berkas sebagai 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>
				

Menciptakan Visual C#.Proyek NET

  1. Buat baru Visual C#.NET aplikasi Windows sebagai berikut:
    1. Mulai Microsoft Visual Studio.NET.
    2. Pada Berkas menu, titik Baru, lalu klik Project.
    3. Dalam Proyek baru kotak dialog, klik Visual C# proyek di bawah Jenis proyek, lalu klik Aplikasi Windows di bawah Pola acu.
  2. Tarik TextBox kontrol, dua Tombol kontrol, dan DataGrid kontrol dari toolbox untuk formulir default Anda, Form1.cs.
  3. Menetapkan Multiline properti TextBox untuk Benar.
  4. Impor ruang nama berikut:
    using System.Xml;
    using System.IO;
    using System.Data.SqlClient;
    					
  5. Tambahkan kode berikut setelah Utama fungsi:
    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. Tambahkan kode berikut untuk Button1_Click acara:
    XmlDocument xmldoc = new XmlDocument();
            xmldoc = LoadXMLDoc();
            XmlNode nextnode; 
            nextnode = xmldoc.FirstChild.NextSibling;
            this.textBox1.Text = nextnode.OuterXml.ToString();
    					
  7. Tambahkan kode berikut untuk Button2_Click acara:
    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. Mengubah properti di SqlConnection rangkaian sambungan yang diperlukan untuk lingkungan Anda.
  9. Membangun dan menjalankan proyek.
  10. Klik Button1.

    Kesalahan yang Anda terima konsisten dengan deskripsi galat yang dijelaskan di Data diperlukan: Sebuah file XML dengan karakter khusus bagian. XML data muncul di TextBox; ampersand diganti dengan
  11. Klik Button2.

    Dalam DataGrid, perhatikan bahwa companyname ampersand dan yang TextBox menampilkan data XML dengan

REFERENSI

Untuk informasi tambahan, klik nomor artikel berikut ini untuk melihat artikel di Pangkalan Pengetahuan Microsoft:
251354Bagaimana menemukan dan mengganti karakter khusus dalam dokumen XML dengan Visual Basic

Properti

ID Artikel: 316063 - Kajian Terakhir: 24 September 2011 - Revisi: 2.0
Berlaku bagi:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Kata kunci: 
kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB316063 KbMtid
Penerjemahan Mesin
PENTING: Artikel ini diterjemahkan menggunakan perangkat lunak mesin penerjemah Microsoft dan bukan oleh seorang penerjemah. Microsoft menawarkan artikel yang diterjemahkan oleh seorang penerjemah maupun artikel yang diterjemahkan menggunakan mesin sehingga Anda akan memiliki akses ke seluruh artikel baru yang diterbitkan di Pangkalan Pengetahuan (Knowledge Base) dalam bahasa yang Anda gunakan. Namun, artikel yang diterjemahkan menggunakan mesin tidak selalu sempurna. Artikel tersebut mungkin memiliki kesalahan kosa kata, sintaksis, atau tata bahasa, hampir sama seperti orang asing yang berbicara dalam bahasa Anda. Microsoft tidak bertanggung jawab terhadap akurasi, kesalahan atau kerusakan yang disebabkan karena kesalahan penerjemahan konten atau penggunaannya oleh para pelanggan. Microsoft juga sering memperbarui perangkat lunak mesin penerjemah.
Klik disini untuk melihat versi Inggris dari artikel ini:316063

Berikan Masukan

 

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