tool zum ersetzen von alten werte durch neue

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • tool zum ersetzen von alten werte durch neue

    Hallo zusammen,

    ich bin damit beauftragt worden ein tool zu schreiben das bestimmte werde in dateien in neue werte wandelt.
    das programm an sich ist kein problem. leider habe ich bis jetzt noch nie mit xml gearbeitet.

    stelle ich mir das so richtig vor:

    Quellcode

    1. <root>
    2. <alter_wert>
    3. </alter_wert>
    4. <neuer_wert>
    5. </neuer_wert>
    6. </root>


    jetzt hätte ich als erstes alle alten und neuen werte in einer liste gespeichert. dann die datei durchsucht und jeden alten wert durch den neuen ersetzt...

    thx, truespin
  • Hi,
    verstehe ich das richtig, dass die XML Datei zur Konfiguration des Programmes dient?
    Dann solltest du noch einen Knoten drumherum machen:

    Quellcode

    1. <root>
    2. <node>
    3. <alter_wert>a</alter_wert>
    4. <neuer_wert>b</neuer_wert>
    5. </node>
    6. <node>
    7. <alter_wert>a</alter_wert>
    8. <neuer_wert>b</neuer_wert>
    9. </node>
    10. </root>


    Oder willst du Inhalte innerhalb von XML Dateien ersetzen?
    Mit welcher Sprache arbeitest du denn?

    Ansonsten sehe ich keine Probleme bei der Realisierung.
  • hallo,

    ich hab mich gestern nochmal ne bisschen umgesehen.
    bin wohl etwas schnell an die sache ran gegangen.

    jetzt würde ich das ganze so angehen:

    mit c# xml serialicer erstelle ich mir eine xml-datei in der die neuen und alten werte wie d0nut beschrieben hat abgelegt werden.

    als nächsten schritt muss ich diese werte wieder in z.B. einer Liste speicher um sie im weiteren verlauf dese programms verwenden zu können... sehe ich das richtig?

    nun muss ich die zu durchsuchende datei auf die entsprechenden alten werte durchsuchen und gegen die neuen ersetzten.

    ich hoffe mal ich hab nicht nen größeren denkfehler drin. bitte weißt mich darauf hin ;)


    thx, truespin
  • ja genau. Dein Programm arbeitet nur mit den Listen.
    Die XML wird nur beim beim Start des Programms geladen und beim ändern der Liste wieder aktualisiert.
    Vielleicht ist es für die C# Nutzer noch interessant zu wissen wie du die Ersetzungen durchführst.

    in php mache ich das immer über ein assoziatives array:

    Quellcode

    1. $x = array(
    2. 'search' => 'replace',
    3. 'a' => 'b'
    4. );
    5. $old_content = file_get_contents('filename');
    6. $new_content = str_replace(
    7. array_keys($x),
    8. array_values($x),
    9. $old_file
    10. );
    11. fwrite(.., $new_content)
    Alles anzeigen
  • guten morgen zusammen,

    hmm ja das wäre für mich auch interessant ;)

    bin mir da selbst noch nicht so sicher. ich hätte wohl angefangen den gazen text einzulesen und für jedes "wort" meine liste durchlaufen muss. finde ich eine übereinstimmung, muss ich diese dann ersetzen...

    das hört sich für mich sehr unperformat an. ich bin für jeden vorschlag offen!


    thx, truespin
  • guten morgen zusammen,

    hier nur nochmal ne kleine zusammenfassung wie ich das mit der xml datei gelöst habe.

    das xml file indem die alten und neuen werte gespeichert werden sieht etwa so aus:

    Quellcode

    1. <?xml version="1.0" encoding="utf-8" ?>
    2. - <XmlContainer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    3. - <Values>
    4. - <ValueContainer_t>
    5. <NewValue>bla</NewValue>
    6. <OldValue>blub</OldValue>
    7. </ValueContainer_t>
    8. - <ValueContainer_t>
    9. <NewValue>bla</NewValue>
    10. <OldValue>blub</OldValue>
    11. </ValueContainer_t>
    12. - <ValueContainer_t>
    13. <NewValue>bla</NewValue>
    14. <OldValue>blub</OldValue>
    15. </ValueContainer_t>
    16. - <ValueContainer_t>
    17. ...
    Alles anzeigen


    mit dem c# serializer lese ich die werte aus und speichere sie in zwei listen (lOldValue, lNewValue) ab.

    nun wird die datei inder die werte ersetzt werden sollen mit dem textreader eingelesen und in einer string variable abgelegt.
    mit der .replace funktion wird nun der string nach den alten werten durchsucht und durch die neuen ersetzt.

    Quellcode

    1. foreach (ValueContainer_t oCurValue in oXmlContainter)
    2. {
    3. sNewContent = sNewContent.Replace(oCurValue.OldValue, oCurValue.NewValue);
    4. }



    danke für die hilfe d0nut.


    thx, truespin