verschiedene String aus mehreren xml-Dateien löschen?

  • VB.NET

Es gibt 61 Antworten in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    verschiedene String aus mehreren xml-Dateien löschen?

    Hallo Forum,

    ich möchte die String " (1)", " (2)", " (3)", " (4)", " (5)", aus 10 XML-Dateien löschen.
    kann mir bitte jemand helfen?

    Ich nehme an, ich muss alle XML-Dateien in eine Liste(XML-Datein) packen,
    und dann

    for each XML-Datei in Liste(XML-Dateien)

    remove strings

    oder so ähnlich.

    Kann mir da bitte jemand auf die Sprünge helfen?

    Danke

    Tom
    @TomWi:: Mach das im Editor des Studios oder im Notepad++ von Hand.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke, da habt ihr recht. Aber ich hab gerade festgestellt, dass ich mein Problem nicht richtig beschrieben habe.

    hier mal ein Ausschnitt aus dem XML-File

    XML-Quellcode

    1. <material type="A3S::Chrome" name="_Chrom_Hochglanz2[0]" label="Alu_poliert">
    2. <parameter type="string" name="InternalType" value="preset">
    3. </parameter>
    4. <parameter type="double" name="MultiLayer" value="0">
    5. </parameter>
    6. <parameter type="string" name="ShadingModel" value="unknown">
    7. </parameter>
    8. <parameter type="string" name="break_def_map" value="Simple_Metal_Mtl_Break_pattern (1).jpg">
    9. </parameter>
    10. <parameter type="string" name="brush_def_map" value="Simple_Metal_Mtl_Brush_pattern (1).jpg">
    11. </parameter>
    12. </material>


    ich muss jetzt alle (1) bis (4) Strings aus dem XML löschen.
    Da es den Tag "Parameter" aber nicht nur unter dem Tag"material" gibt, und die (1) an anderen Stellen im XML noch vorkommen und auch dort bleiben müssen, funktioniert das wohl mit dem Editor oder NP++ nicht.

    TomWi schrieb:

    alle (1) bis (4) Strings aus dem XML löschen.
    Von wieviel XML-Files reden wir?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    TomWi schrieb:

    momentan sind es 10
    Die hättest Du mit der Hand seit 3 Stunden fertig. :D
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    wenn du mir sagst, wie ich im Editor nur die (1) bis (4) lösche, die in den besagten Tags stehen und nicht auch alle anderen (1) bis (4)

    XML-Quellcode

    1. <material type="A3S::Chrome" name="_Chrom_Hochglanz2[0]" label="Alu_poliert">
    2. <parameter type="string" name="InternalType" value="preset">
    3. </parameter>
    4. <parameter type="double" name="MultiLayer" value="0">
    5. </parameter>
    6. <parameter type="string" name="ShadingModel" value="unknown">
    7. </parameter>
    8. <parameter type="string" name="break_def_map" value="Simple_Metal_Mtl_Break_pattern (1).jpg">
    9. </parameter>
    10. <parameter type="string" name="brush_def_map" value="Simple_Metal_Mtl_Brush_pattern (1).jpg">
    11. </parameter>
    12. </material>
    Pack alle betreffenden Dateien und keine weiteren ins Studio.
    Mach Ctrl+H und dann dies:

    und dann für (2), (3), (4), das Edit-Fenster bleibt ja stehen.
    Dauert ca. 10 Sekunden.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke, aber das geht doch nicht, weil die Strings in den anderen Tags nicht gelöscht werden dürfen. Aber das werden sie doch mit deiner Methode, oder?

    XML-Quellcode

    1. <models>
    2. <import src="P7A8221__A_11_A_ST_PACKAG_HECKKLAPPE_______LA_CLEANED (1).a3g" ">
    3. </Import>
    4. </models>
    @TomWi:: Dann drück auf "Ersetzen" nicht aber auf "Alle ersetzen".
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Irgendwie verstehe ich wohl das Problem nicht ganz.
    Du hast Anfang- und Endtag ("material"). Du solltest also die Dateien in einer Schleife durchgehen, jede Datei zeilenweise auslesen und nach diesem Anfangtag suchen. Wenn du den gefunden hast (z.b. mit .StartsWith("<material") ), dann gehst du weiter zeilenweise und fragst, ob die Zeile mit "</material>" anfängt. Wenn nicht, dann suchst du nach "(1)" usw (pack (1), (2), (3) und (4) in ein Array und gehe den in einer Schleife durch) - und ersetzt sie mit "". Wenn die Zeile damit anfängt (mit Endtag), dann hörst du auf (Exit For). Fertig.

    Oder stehe ich auf dem Schlauch?
    Habe jetzt schnell mal für mich geschrieben und nicht getestet, ich habe 18 Zeilen Code dafür gebraucht. ;) Aufwand ca. 10 Minuten (wenn überhaupt), ist also nicht so schwer.

    EDIT: Schreiben muss man auch noch, nicht nur ersetzen. :D Sind also 24 Zeilen jetzt geworden (und längerer Aufwand, da Fehlersuche). Bin auf deine Lösung gespannt.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sonne75“ ()

    ich bin mir über die Vorgehensweise noch nicht ganz im klaren.

    Kann ich ein XML-file genauso Zeile für Zeile durchlaufen, wie ich es mit einer Textdatei mache, und dann dort die Strings einfach suchen, und löschen?

    Ich muss ja irgendwie den Value der Nodes in einen String umwandeln und den dann verändern, oder? Ich steig grad echt nicht mehr durch. Wahrscheinlich denke ich zu kompliziert.

    Werde jetzt erst mal testen.

    Danke ;)