Brauche Hilfe bei XML

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).
  • Hallo. Ich schrieb es ja schon in meinem Thema Harz Express. Aber ich brauche hier noch etwas Hilfe. Und ich glaube, es wäre besser ein neues Thema dafür zu eröffnen.


    Also es sind Objekte in meiner Tracks.bin die raus müssen. Sie wurden bei einem früheren XML Unfall unterdessen alle durch Milchflaschen ersetzt. Ist aber eigendlich egal. Manuell löschen geht aus irgendeinem Grund nicht. Ich habe den fetten 50m Block schon reingepackt, damit ich von Weitem ein fehlendes Objekt sehe. Nur wenn ich einfach nur die Dinger im Editor lösche, kommt beim Drücken auf F2 nur "es gibt keine zu speichernden Änderungen" und wenn ich irgendwas mache, und dann speichere, sind die nach dem nächsten Neustart wieder da.


    Also bleibt nur Entfernen aus der Tracks.bin


    Es sind größtenteils Weichenmotoren und Signale. Die unterdessen in einem falschen Ordner gelinkt sind.
    Kann jemand per Script folgendes tun?:
    Alles von <Network-cTrackNode d:id="1184616104"> bis </Network-cTrackNode> löschen, wenn in den childs irgendwo z.B. der hier kommt: "RailNetwork\Junctions\Automatic_Junction_Lever.xml" Also wenn letzteres in den childs ist, soll alles von da bis da gelöscht werden. Damit ich alles raushauen kann. Denn RW-Tools tut da nix.


    PS: Ich kann gerne jemandem die Tracks.bin zukommen lassen.

  • ;) Warum öffnest du die bin,XML oder was auch immer nicht mit einem Texteditor und löscht die Einträge, die du nicht haben möchtest? Du kannst mir gerne die bin zu schicken und musst dann angeben, was da gelöscht werden soll. Dann schreibe ich dir ein Progrämmchen. Wahrscheinlich macht es auch einfach nur eine Bat. Das du als aktiver TS User Kenntnisse in der TS Struktur hast, setzte ich erstmal voraus, weil ohne ist schlecht Kirchen essen.


    Tip: *hinweis* Entwicklungsumgebungen gibt es kostenlos. Wenn du selber einfache Programme schreiben möchtest, musst du lediglich Zeit investieren. Wie was gemacht wird, steht Bändeweise in der Entwicklungsumgebung selbst und sollte das nicht reichen, gibt es ganze Welten im Internet wo du für jedes aber auch jedes Problem mindestens eine Lösung bekommst.


    Doch Achtung: Das Problem ist nicht das Löschen von Texteinträgen in einer Datei, sondern die Mega Möglichkeiten einer Entwicklungsumgebung und dort das zu finden was man braucht.


    Gruß Norbert

    2 Mal editiert, zuletzt von Norbert Koch ()

  • Doch schon nur mit "Suchen-Ersetzen" ist es hier nicht getan. Verschiedene sind es nicht. Aber tausende von je 3 verschiedenen. Die sollen nicht einfach im Link korrigiert, sondern komplett von der Strecke verschwinden. Da reicht es ja nicht, einfach nur den Link zu entfernen.

  • So die Tracks bin ist jetzt auf meiner Festplatte ich schaue mir dass mal an. *denk* Allerdings glaube ich herausgelesen zu haben, dass es dir zuviel Arbeit ist. Glaubst du, dass mein Wissen vom Himmel gefallen ist? Da sind zichtausende Arbeitstunden seit dem Jahr 1995 den Bach runtergeflossen. Im Sommer wenn andere ihren Arsch auf die Grüne Wiese legten und diesen sich haben verbrennen lassen, habe ich dafür gesorgt meine EDV Probleme eines Tages selbst lösen zu können. Das kann man dir auch zumuten.Ich werde erstmal die Einträge manuell löschen und wenn ich feststelle, das ich dafür grade mal 60 Minuten brauche oder gar noch weniger, bin ich etwas angesäuert. Denn dieser Zeitaufwand ist für dich zumutbar. Wenn es um eine Datenbank mit 50000 Einträgen gehen würde sehe es schon etwas anders aus.


    Gruß Norbert

  • Ich hätte prinzipiell geholfen, weiß aber ganz genau, dass der Aufwand, ein solches Script zu schreiben mehr Aufwand ist als das manuelle Löschen.
    Es ist ja nicht damit getan, einen Parser mit File-IO-Funktionen zu bauen, sondern der muss ja auch getestet werden. Niemand kann sich davon freisprechen, einem Zahlendreher oder einer vergessenen Klammer zum Opfer zu fallen.


    Das sähe anders aus, wenn man das Script mehrfach benutzen könnte, aber im vorliegenden fall ist das ja eine Eintagsfliege und individuell nur für diesen Zweck. Einmal erfolgreich ausgeführt --> Mülleimer.


    Und dazu fehlt mir die Lust und vor allem die Zeit. Zumal es ja keine Garantie gibt, dass das eigentliche Problem damit beseitigt wird. Das Herumfummeln in der Tracks.bin ist mit immensen Risiken verbunden und der Wunsch, ganze Gleissegmente einer anderen Strecke bei sich per Copy&Paste einzufügen kann nach meiner Erfahrung und Kenntnis nur darin münden, alles anschließend wegschmeißen zu dürfen, weil der TS hierzu einfach nicht in der Lage ist. Allein die ganzen mit herüberkopierten Signale die aber offensichtlich nun als amputierte Zombies (im Sinne von: weniger Gleislinks als im Original ---> kaputt/untot) auf der Strecke, die das Ziel dieser Copy&Paste-Aktion war, ihr Dasein fristen, lässt mich befürchten, dass man hier eine Büchse der Pandora öffnete, die man durch bearbeiten der Tracks.bin nur mit sehr großem Aufwand und vielen nebenwirkungen und versteckten Risiken wieder schließen kann.


    Ich hoffe, ihr habt Erfolg damit, habe aber ganz große Zweifel, weswegen ich mich auch nicht als Scripter habe anbieten wollen.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Und dazu fehlt mir die Lust und vor allem die Zeit. Zumal es ja keine Garantie gibt, dass das eigentliche Problem damit beseitigt wird.


    *ja* Ja Prelli da hast du etwas gutes getan. Deine Zeit nicht aus dem Fenster geworfen. Es mag ja sein, dass ich bei den gefühlten 100 000 Einträgen etwas übersehen habe. Die Einträge konnte ich nicht finden, Infolge müssen es wenn überhaupt nur 2 oder 3 sein. Da muss professorexabyte mal zeigen, wo denn die 100 000 Enträge oder wie viele es auch immer sein sollen in der Bin sich verstecken. Die 2 oder 3 Einträge wenn sie dann vorhanden sind ,kann er selber manuell löschen.


    RWAustria\Austria\RailNetwork\Junctions\Automatic_Junction_Lever.bin/xml verlinken,
    RWAustria\Austria\RailNetwork\Junctions\Manual_Junction_Lever.bin/xml verlinken,
    RWAustria\Austria\RailNetwork\Signals\Terminator.bin/xml verlinken.


    Gruß Norbert


    Die Restliche Zeit des Tages bohre ich in der Nase in der Hoffung dort fündig zu werden.

  • ;) Und wie viele Einträge sind es nun? Spanne uns nicht auf die Folter. Wir wollen alle wissen, ob es dir einfach nur zuviel Arbeit ist. Notepad ++ müsste ich erst installieren und dann finde ich wie viele Einträge mit ("Lever")


    Gruß Norbert

  • @professorexabyte
    Gib mal bitte ein beispiel anhand der oben zu sehenden Textpassage, wie das vorher/nachher aussehen soll.
    Eventuell hab ich eine Idee, wie das auch ohne Scripterei gehen kann.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • :ugly: So viele Lesezeichen für die Suche nach Lever habe ich hier nicht. Aber mehr als 2 sind es schon. Kannst du selber manuell löschen. Da es sich um Codeblöcke handelt wird die Trefferqote noch geringer ausfallen, da du ja den ganzen Codeblock löschen musst. Eine Arbeit von "Stunden".


    Gruß Norbert

  • Falls wirklich nur dieser Block gelöscht werden muss, geht das ohne Probleme durch Suchen/Ersetzen.
    Da muss man nichts scripten.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.

  • Nö so kurz ist der Eintrag nicht, Der Professessor hat ja richtig im Beitrag 1 geschrieben von <Network-cTrackNode d:id="1184616104"> bis </Network-cTrackNode>
    Das ist dann die Komplette Information für einen Weichenhebel, mit Lage, Einbaukoordinaten ....
    Da eine Untermenge rauszulöschen, kann, muss aber nicht gutgehen.
    StS

    Keine Hilfe und Auskunft per PN, da meist von allgemeinem Interesse. Diese Fragen bitte im Forum stellen.

    Einmal editiert, zuletzt von StS ()

  • Mit RegEx könnte man diese Nodes entfernen, die eine individuelle ID haben.


    Ist alles keine Zauberei. Auch dafür muss man nichts scripten, sondern sich mal mit Regular Expressions beschäftigen.

    Egal, wie weit Draußen man die Wahrheit über Bord wirft, irgendwann wird sie irgendwo an Land gespült.