K vyhledání a nahrazení speciálních znaků v souboru XML s Visual C#.NET

Překlady článku Překlady článku
ID článku: 316063 - Produkty, které se vztahují k tomuto článku.
Rozbalit všechny záložky | Minimalizovat všechny záložky

Na této stránce

Souhrn

Tento článek popisuje, jak nahradit zvláštní znaky v souboru Extensible Markup Language (XML) pomocí aplikace Visual C#.NET.

Popis techniky

XML predefines následující odkazy na pět entity pro speciální znaky, které by jinak měly být interpretovány jako součást 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;


Odkazy na entity a znak lze uniknout levá úhlová závorka, ampersand a jiné oddělovače. Můžete použít také alfanumerické znakové odkazy. Alfanumerické znakové odkazy jsou rozbaleny, okamžitě po jejich rozpoznány. Kromě toho protože alfanumerické znakové odkazy jsou považovány za znaková data, můžete použít alfanumerické znakové odkazy

Pokud deklarujete některou z následujících dvou entit:
  • &amp;
musíte deklarovat jako vnitřní subjekty, jejichž náhradní text je znak odkaz na příslušné znak (levá úhlová závorka nebo ampersand), který je právě uvozeny. Dvojitá úniku je vyžadován pro tyto entity, aby odkazy na ně ve správném výsledkem.

Jestliže některý z následujících tří subjektů:
  • >
  • "
  • "
musíte deklarovat jako vnitřní subjekty, jejichž náhradní text je jeden znak, který je právě uvozeny.

Zjistěte, zda je nutné nahradit speciální znak

Není požadováno: XML soubor, ve kterém jsou data načtena z databáze

Při použití aplikace Microsoft.NET Framework data načtena a uložena v Objekt DataSet objekt. Při zápisu dat z Objekt DataSet do souboru XML pomocí WriteXml Metoda, speciální znaky, které jsou uvedené v části "Souhrn" jsou nahrazeny odkazy příslušných znaků. Proto při zápisu souborů XML a používáte-li Objekt DataSet, je vyžadován žádný zvláštní náhradní proces.

Požadováno: XML soubor, který obsahuje data XML výrobců se speciálními znaky

Soubor XML nebo data XML, která pochází ze třetí strany mohou někdy používat tyto speciální znaky. V tomto scénáři data vygeneruje chyby při načítání do XmlDocument objekt nebo XmlReader objekt.

Pokud je nalezen znak se zobrazí následující chybová zpráva:
Při analýze došlo k chybě entity_name, řádek #, pozice #.
kde řádky # a umístění # představují přesné umístění speciální znak.

Při výskytu levá úhlová závorka, zobrazí se následující chybová zpráva:
"<' character,="" hexadecimal="" value="" 0x3c,cannot="" be="" included="" in="" a="" name.=""></'> #, pozice #.
V této chybové zprávě, řádek # a umístění # pozice neoznačují, kde existuje levá úhlová závorka, ale pokud dojde k druhé levá úhlová závorka.

Pokud soubor XML obsahuje pravá úhlová závorka (&gt;) rovné uvozovky (") a apostrof (') XmlReader a XmlDocument objekty zpracování těchto objektů, protože tyto znaky se vyžadují pouze jeden znak nahrazení.

Nahrazení zvláštních znaků

Nahrazení ampersand a znaky levá úhlová závorka:
  1. Vytvořte soubor XML.
  2. Vytvořte aplikaci Visual C#.NET aplikací a potom vložte kód.

Vytvořit soubor XML

Zkopírujte a vložte následující kód do programu Poznámkový blok a uložte soubor jako 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>
				

Vytvořte aplikaci Visual C#.NET projektu

  1. Vytvoří nové Visual C#.NET aplikací systému Windows takto:
    1. Spusťte aplikaci Visual Studio.NET.
    2. V Soubor příkaz Novýa klepněte na tlačítko Projekt.
    3. V Nový projekt Dialogové okno, klepněte na tlačítko Visual C# projekty ve skupinovém rámečku Typy projektůa klepněte na tlačítko Aplikace systému Windows ve skupinovém rámečku Šablony.
  2. Přetáhněte Textové pole řízení, dvě Tlačítko Ovládací prvky a Objekt DataGrid řídit z panelu nástrojů do výchozího formuláře Form1.cs.
  3. Nastavit Víceřádková sleva Vlastnost Textové pole k PRAVDA.
  4. Importujte následující obory:
    using System.Xml;
    using System.IO;
    using System.Data.SqlClient;
    					
  5. Přidejte následující kód po Hlavní funkce:
    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. Přidejte následující kód Button1_Click událost:
    XmlDocument xmldoc = new XmlDocument();
            xmldoc = LoadXMLDoc();
            XmlNode nextnode; 
            nextnode = xmldoc.FirstChild.NextSibling;
            this.textBox1.Text = nextnode.OuterXml.ToString();
    					
  7. Přidejte následující kód Button2_Click událost:
    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. Změnit vlastnosti v SqlConnection připojovací řetězec podle potřeby pro vaše prostředí.
  9. Vytvoření a spuštění projektu.
  10. Klepněte na tlačítko Button1.

    Jsou v souladu s popisem chyby, které jsou vysvětleny v chyby, které obdržíte Požadováno: Soubor XML s speciální znaky sekce. XML data se zobrazí v Textové pole; ampersand je nahrazen.
  11. Klepněte na tlačítko Button2.

    V Objekt DataGrid, Všimněte si, že Firma znak ampersand, a který Textové pole Zobrazí data XML s

Odkazy

Další informace získáte klepnutím na následující číslo článku databáze Microsoft Knowledge Base:
251354Vyhledání a nahrazení speciálních znaků v dokumentu XML jazyka Visual Basic

Vlastnosti

ID článku: 316063 - Poslední aktualizace: 19. května 2011 - Revize: 6.0
Informace v tomto článku jsou určeny pro produkt:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Klíčová slova: 
kbgrpdsmsxml kbhowtomaster kbmsxml kbmt KB316063 KbMtcs
Strojově přeložený článek
Důležité: Tento článek byl přeložen pomocí software společnosti Microsoft na strojový překlad, ne profesionálním překladatelem. Společnost Microsoft nabízí jak články přeložené překladatelem, tak články přeložené pomocí software na strojový překlad, takže všechny články ve Znalostní databázi (Knowledge Base) jsou dostupné v češtině. Překlad pomocí software na strojový překlad ale není bohužel vždy dokonalý. Obsahuje chyby ve skloňování slov, skladbě vět, nebo gramatice, podobně jako když cizinci dělají chyby při mluvení v češtině. Společnost Microsoft není právně zodpovědná za nepřesnosti, chyby nebo škody vzniklé chybami v překladu, nebo při použití nepřesně přeložených instrukcí v článku zákazníkem. Společnost Microsoft aktualizuje software na strojový překlad, aby byl počet chyb omezen na minimum.
Projděte si také anglickou verzi článku:316063

Dejte nám zpětnou vazbu

 

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