Nasıl yapılır: bulun ve Visual C# .NET ile XML dosyası özel karakterleri değiştirme

Makale çevirileri Makale çevirileri
Makale numarası: 316063 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, Visual C#. NET'i kullanarak bir Genişletilebilir Biçimlendirme Dili (XML) dosyasındaki özel karakterleri değiştirme.

Tekniğin Açıklaması

XML, aksi Biçimleme Dili bir parçası olarak yorumlanan özel karakterler aşağıdaki beş varlık başvuruları predefines:

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;


Sol açılı ayraç "ve" işareti ve diğer sınırlayıcıları üzere, varlık ve karakter başvuruları kullanabilirsiniz. Sayısal karakter başvuruları da kullanabilirsiniz. Hemen tanınan, sayısal karakter başvuruları genişletilir. Buna ek olarak, sayısal karakter başvuruları karakter verisi olarak kabul edilir çünkü sayısal karakter başvuruları kullanabilirsiniz

Aşağıdaki iki varlık birini bildirirseniz:
  • <
  • &
iç varlıkları değiştirme metni öncesinde ilgili karakteri (sol açılı ayraç veya ve işareti) karakter başvurusu olarak bildirmelisiniz. Bu çift escaping bunları başvuruları doğru biçimlendirilmiş bir sonucu üretmek için bu varlıklar için gereklidir.

Aşağıdaki üç varlıkları bildirirseniz:
  • >
  • '
  • "
iç varlıkları öncesinde tek bir karakteri, yerine konacak metni olduğu gibi bunları bildirmelisiniz.

Özel (special) karakter değiştirmeniz gereken olup olmadığını belirleyin.

Gerekli değil: verileri bir veritabanından alınan XML dosyası

Microsoft .NET Framework'Ü kullanırken, veri alınır ve bir DataSet nesnesinde depolanır. Veri bir DataSet XML dosyasına WriteXml yöntemini kullanarak yazma "Özet" bölümünde anılan özel karakterleri ile ilgili karakter başvuruları değiştirilir. Bu nedenle, XML dosyalarını yazarken ve DataSet kullanıyorsanız, özel değiştirme işlem gereklidir.

Gereken: özel karakterlerin diğer XML verilerini içeren XML dosyası

Bazen bu özel karakterler XML dosyası veya bir üçüncü taraftan gelen XML verileri kullanabilir. Bu senaryoda, verileri, XmlDocument nesne veya nesne XmlReader yüklediğinizde hata üretir.

Ampersan karakteri oluştuğunda aşağıdaki hata iletisini alırsınız:
Satır #, # getirin ayrıştırma entity_name, bir hata oluştu.
Burada # satır ve # temsil özel (special) karakterin tam konumunu konumlandırın.

Bir sol açılı ayraç oluştuğunda aşağıdaki hata iletisini alırsınız:
' < ' Karakteri, onaltılık düzendeki bir değerin 0x3C, ad içinde yer alamaz. Satır#, position #.
Bu hata iletisindeki satır # ve konumu # değil belirtmek konumu sol açılı ayraç bulunduğu, ancak burada ikinci sol açılı ayraç ile karşılaştı.

Bir sağ açılı ayraç (&gt;), düz tırnak işareti ('') veya kesme işareti ('), XML dosyası içeriyorsa,Bu karakterler yalnızca tek bir karakter yerine gerektirdiğinden, XmlReader ve XmlDocument nesneleri bu nesne tanıtıcısı.

Özel karakterleri değiştirme

Ve işareti ve sol açılı ayraç karakteri değiştirmek için <a0></a0>:
  1. XML dosyası oluşturun.
  2. Visual C# .NET uygulaması oluşturma ve kodunu ekleyin.

XML dosyası oluşturma

Kopyalama ve aşağıdaki kodu Not Defteri'ne yapıştırın ve dosyayı Customers.xml kaydedin:
<?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 C# .NET projesi oluşturma

  1. Yeni bir Visual C# .NET Windows uygulaması aşağıdaki gibi oluşturursunuz:
    1. Microsoft Visual Studio .NET'i başlatın.
    2. Dosya menüsünde Yeni ' nin üzerine gelin ve sonra Project ' i tıklatın.
    3. Yeni proje) iletişim kutusunda, Project Types altında Visual C# Projects ' ı tıklatın ve şablonları altında Windows uygulama ' yı tıklatın.
  2. Araç kutusundan, TextBox (metin kutusu) denetimi, iki Düğme denetimi ve bir DataGrid denetimi varsayılan formunuza, Form1.cs sürükleyin.
  3. TextBoxçok satırlı özelli?inin true olarak ayarlayın.
  4. Aşağıdaki ad alma:
    using System.Xml;
    using System.IO;
    using System.Data.SqlClient;
    					
  5. Ana işlevi sonra aşağıdaki kodu ekleyin:
    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. Için <a2>Button1_Click</a2> olay aşağıdaki kodu ekleyin:
    XmlDocument xmldoc = new XmlDocument();
            xmldoc = LoadXMLDoc();
            XmlNode nextnode; 
            nextnode = xmldoc.FirstChild.NextSibling;
            this.textBox1.Text = nextnode.OuterXml.ToString();
    					
  7. Button2_Click olay için aşağıdaki kodu ekleyin:
    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. Ortamınız için gerekli <a1>SqlConnection</a1> bağlantı dizesinde özelliklerini değiştirin.
  9. Oluşturup projeyi çalıştırın.
  10. Button1</a1> düğmesini tıklatın.

    Aldığınız hata de hataların açıklamasını tutarlı Required: An XML file with special characters bölümü. XML verileri TextBox görünür; "ve" işareti ile değiştirilir
  11. Button2</a1> düğmesini tıklatın.

    DataGrid denetiminde, dikkat edin, companyname ampersan vardır ve TextBox XML verileri görüntüler.

Referanslar

Ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
251354Nasıl bulun ve Visual Basic ile bir <a0>XML</a0> belgesinde özel karakterleri değiştirme

Özellikler

Makale numarası: 316063 - Last Review: 29 Mart 2007 Perşembe - Gözden geçirme: 4.4
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Anahtar Kelimeler: 
kbmt kbgrpdsmsxml kbhowtomaster kbmsxml KB316063 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:316063

Geri Bildirim Ver

 

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