[C#] Problem mmit ArrayList + CData

yellowspam

Erfahrenes Mitglied
Hi@all: ich habe eine Funktion welche den Text in einem XMl-File auf die CData-tags durchsucht.
Je nachdem ob Daten aus dem XML-file geladen oder geschrieben werden, soll die Funktion die CData-Tags hinzufügen oder entfernen.

Nun habe ich eine ArrayList gemacht und soll nun mit ner For-Schleife alles so oft durchgehen wie...? und da liegt der Punkt ich weiß nicht wirklich was genau dann die Funktion tun soll, der Teil mit dem raussuchen der Tags und entfernen bzw. hinzufügen existiert schon,wenn auch mit fehlern.

Hier mal der Source:

C#:
//fügt CData-tags hinzu und/oder entfernt diese
        public static string PrepareCDATA(string description, bool loading)
        {

            System.Collections.ArrayList StartPattern = new System.Collections.ArrayList(2);
            System.Collections.ArrayList EndPattern = new System.Collections.ArrayList(2);

            StartPattern.Add("<![CDATA[");
            StartPattern.Add("<![CDATA[");

            EndPattern.Add("]]&gt;");
            EndPattern.Add("]]>");


            for (int i = 0; i < StartPattern.Count; i++)
            {    
                 
                    if (loading)
                    {
                        //find and delete cdata tags from the text
                        int startIndexCData = description.IndexOf((StartPattern.ToString()));
                        int endIndexCData = description.IndexOf((EndPattern.ToString()));

                        // wenn der index >= 0 ist, dann gibt es ein cdata tag im text...
                        // ... wenn NICHT, haben wir NICHTS zu tun!!
                        if (startIndexCData >= 0)
                        {
                            if (startIndexCData <= (StartPattern.ToString()).Length && endIndexCData > startIndexCData + 1)
                            {

                                description = description.Substring(((StartPattern.ToString()).Length + 1), (description.Length - ((StartPattern.ToString()).Length + 1)));
                                description = description.Substring(0, ((description.ToString()).Length - (EndPattern.ToString()).Length));

                            }
                        }
                    }
                    else
                    {
                        // append text with the cdata tag
                        description = "<![CDATA[" + description + "]]>";

                        // es soll nicht der fall sein, dass das cdata tag 2x vorkommt...
                        // ... <![CDATA[ <!CDATA[ ...

                    }

            }

Vllt. könnt ihr mir ein paar Lösungsansätze geben, habe schon herumprobiert aber nur fehler erzeugt :(
 
Hi

Ich versteh noch nicht so ganz, was du vor hast:
aber wieso nimmst du nicht den kompletten String und machst darauf ein Replace?
 
Die replace-funktion ersetzt ja nur einen angebenen String durch einen neuen.
Aber ich will ja das die Funktion die CData-tags aus dem Text löscht wenn einer der Datensätze geladen wird.
 
Zurück