Das Suchen und Ersetzen von Sonderzeichen in eine XML-Datei mit Visual c# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 316063 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt die Sonderzeichen in einer XML-Datei mithilfe von Visual c# .NET zu ersetzen.

Beschreibung des Verfahrens

XML definiert die folgenden fünf Entität Verweise für Sonderzeichen, die andernfalls als Teil der Markup-Sprache interpretiert werden:

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;


Entität und Zeichen-Verweise können Sie die linke Spitze Klammer, das kaufmännische und-Zeichen sowie andere Trennzeichen Escapezeichen. Sie können auch numerische Zeichenverweise verwenden. Numerische Zeichenverweise werden erweitert, sofort, wenn Sie erkannt werden. Zusätzlich, da numerische Zeichenverweise als Zeichendaten behandelt werden, können Sie die numerischen Zeichenverweise verwenden

Wenn Sie eine der folgenden zwei Entitäten deklarieren:
  • <
  • &
Sie müssen diese als interne Einheiten deklarieren, dessen Ersetzungstext ein Zeichenverweis auf das jeweilige Zeichen (die linke Spitze Klammer oder das kaufmännische und-Zeichen) ist, die mit Escapezeichen versehen ist. Diese doppelte Escapezeichen ist für diese Entitäten erforderlich, damit Verweise auf diese wohlgeformte Ergebnis.

Wenn Sie eine der folgenden drei Entitäten deklarieren:
  • >
  • "
  • "
Sie müssen diese als interne Einheiten deklarieren, dessen Ersetzungstext ist das einzelne Zeichen, das mit Escapezeichen versehen ist.

Bestimmen Sie, ob Sie ein Sonderzeichen ersetzen müssen

Nicht erforderlich: XML-Datei in dem die Daten aus einer Datenbank abgerufen werden

Wenn Sie Microsoft .NET Framework verwenden, werden Daten werden abgerufen und werden in ein DataSet -Objekt gespeichert. Wenn Sie Daten aus einem DataSet in eine XML-Datei schreiben mit Hilfe der WriteXml -Methode, werden die Sonderzeichen, die im Abschnitt "Zusammenfassung" bezeichnet werden, durch die jeweiligen Zeichenverweise ersetzt. Daher ist, beim Schreiben von XML-Dateien, und Sie ein DataSet verwenden, keine spezielle Ersatz-Vorgang erforderlich.

Erforderlich: XML-Datei, Fremdanbieter-XML-Daten mit Sonderzeichen enthält

Manchmal können die XML-Datei oder die XML-Daten, die von einem Drittanbieter stammen diese Sonderzeichen verwenden. In diesem Fall generiert die Daten Fehler beim Laden in ein XmlDocument -Objekt oder ein XmlReader -Objekt.

Wenn das kaufmännische und-Zeichen gefunden wird, wird folgende Fehlermeldung:
Fehler beim Analysieren entity_name Zeile #, # positionieren.
wobei Zeile # und positionieren # repräsentieren die genaue Position des Sonderzeichens zu.

Wenn eine linke Spitze Klammer gefunden wird, wird folgende Fehlermeldung:
Die ' < ' Zeichen, hexidezimaler Wert 0x3C, kann nicht in einen Namen aufgenommen werden. Zeile#, position #.
In dieser Fehlermeldung der Zeile # und Position # nicht die Position angeben, wobei die linke Spitze Klammer vorhanden, aber, wobei die zweite linke Spitze Klammer gefunden wird.

Wenn die XML-Datei eine rechte spitze Klammer (>), gerade Anführungszeichen ('') oder ein Apostroph (') enthält die XmlReader und die XmlDocument -Objekte behandeln diese Objekte, da diese Zeichen nur einzelne Zeichen Ersatz erforderlich ist.

Ersetzen Sie die speziellen Zeichen

Um das kaufmännische und-Zeichen und die linke Spitze Klammerzeichen zu ersetzen:
  1. Erstellen der XML-Datei.
  2. Erstellen Sie die Visual c#-Anwendung, und fügen Sie den Code.

Erstellen der XML-Datei

Kopieren Sie den folgenden Code in den Editor, und speichern Sie die Datei als 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 c#-Projekt erstellen

  1. Erstellen Sie eine neue Visual c# .NET Windows-Anwendung wie folgt:
    1. Starten Sie Microsoft Visual Studio .NET.
    2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
    3. Klicken Sie im Dialogfeld Neues Projekt klicken Sie unter Projekttypen auf Visual C#-Projekte , und klicken Sie dann unter Vorlagen auf Windows-Anwendung .
  2. Ziehen Sie ein TextBox -Steuerelement, zwei Button -Steuerelemente und ein DataGrid -Steuerelement aus der Toolbox auf das Standardformular Form1.cs.
  3. Legen Sie die MultiLine -Eigenschaft des TextBox auf true fest.
  4. Importieren Sie die folgenden Namespaces:
    using System.Xml;
    using System.IO;
    using System.Data.SqlClient;
    					
  5. Fügen Sie den folgenden Code nach der Main -Funktion:
    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. Fügen Sie folgenden Code zum Ereignis Button1_Click :
    XmlDocument xmldoc = new XmlDocument();
            xmldoc = LoadXMLDoc();
            XmlNode nextnode; 
            nextnode = xmldoc.FirstChild.NextSibling;
            this.textBox1.Text = nextnode.OuterXml.ToString();
    					
  7. Fügen Sie dem Button2_Click -Ereignis folgenden Code:
    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. Ändern der Eigenschaften in der SqlConnection -Verbindungszeichenfolge wie für Ihre Umgebung erforderlich.
  9. Erstellen Sie das Projekt, und führen Sie es aus.
  10. Klicken Sie auf Button1 .

    Die Fehler, die Sie erhalten sind konsistent mit der Beschreibung der Fehler, die im erläutert werden die Required: An XML file with special characters Abschnitt. Die XML-Daten in das Textfeld angezeigt; das kaufmännische und-Zeichen wird mit ersetzt
  11. Klicken Sie auf Button2 .

    Beachten Sie in das DataGrid , Companyname hat ein kaufmännisches und-Zeichen und, die das Textfeld zeigt die XML-Daten mit

Informationsquellen

Weitere Informationen finden Sie die folgende KB-Artikelnummer:
251354Zum Suchen und Ersetzen von Sonderzeichen in einem XML-Dokument mit Visual Basic

Eigenschaften

Artikel-ID: 316063 - Geändert am: Donnerstag, 29. März 2007 - Version: 4.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Keywords: 
kbmt kbgrpdsmsxml kbhowtomaster kbmsxml KB316063 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 316063
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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