Brauche Hilfe bei XML

Discord Einladung
Trete unserem Discord-Server bei (klicke hier zum Beitreten).
  • Zu dumm nur, dass ich irgendwie zu blöd dazu bin mit diesen ganzen Programmen umzugehen. :D Ich brauche mal eine Art Hilfestellung. Denn von diesen ganzen Programmen und den Fachbegriffen habe ich leider keine Ahnung.


    Es handelt sich um ca. 2100 Einträge. Steht blau in meinem Screenshot.


    Tante Edith:
    Joa also es sind immer 186 Zeilen.


    Wie schreibe ich mir jetzt folgendes: Suche Lever. im Dokument. Wenn du Lever gefunden hast, dann suche weiter nach </Network-cTrackNode> und von da an löschst du 186 Zeilen einschließlich der gefundenen Zeile. Wenn fertig, dann fange von vorne an. Wenn lever nicht mehr gefunden wird gebe "finished" aus.

  • Hi,


    erstmal zum Testen nur in (mit) einer Sicherungskopie arbeiten. Anbei mal 2 Bilder. Mit der Suchfunktion habe ich im Notepad++ in der Tracks.xml nach "<Network-cTrackNode" gesucht. Nun kommt, dass am linken Rand eine rote Linie entsteht, welche anzeigt, was alles zu diesem Abschnitt dazu gehört (siehe Bild 01), kann auch durchaus länger sein als bei mir auf dem Bild.
    Gut, nun kommt das Markieren zum Löschen. Dazu erst ganz vorn in der ersten Zeile der roten Markierung klicken, damit dort der Cusor blinkt. Dann zur letzten Zeile der roten Seitenmarkierung navigieren und hinter das letzte Zeichen mit "Umschalt + Linksklick" den gesamten Block markieren (siehe Bild 2).


    Entfernen drücken, es bleibt eine leere Zeile, also nochmal entfernen drücken. Ein Block sollte nun gelöscht sein. Mit den nächsten dann genauso verfahren.


    Grüße

  • Ich hab gerade in der Original HH-H tracks.xml die Lever-Einträge zählen lassen. Etwas über 1700 Einträge. Aber es geht schon schneller zu löschen. Vom Fund nach oben, bis node-ID, dann zuklappen, gleich drunter wieder zuklappen ... so nach etlichen Zeilen mal kontrollieren ob man noch Lever Node Einträge zuklappt. Dann kann man mehrere Zeilen auf einmal löschen.
    StS.

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

  • Man sollte immer zwei mal testen, bevor man was schreibt, es wird nur die Zeile gelöscht und dann wird wieder aufgeklappt. Erst sah es so aus dass die komplette node gelöscht wird, es fehlte aber nur die Startzeile.
    Lass es, das gibt auch nur Mist.
    Da brauchts jemand der xml-Datenbank Programmierung beherrscht, und da Bereiche löschen kann.
    oder Methode Beitrag 22, Node für Node einzeln löschen.
    StS

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

    2 Mal editiert, zuletzt von StS ()

  • Okay ich habe jetzt mal ein wenig gecheatet. Ich habe die Makro aufnahmefunktion benutzt, und einen Löschvorgang wie folgt aufgezeichnet.


    Aufnahme:
    suche: lever von oben nach unten.
    suche Network-cTrackNode d:id= von hier nach oben.
    drücke pos1
    drücke pfeil nach links
    drücke shift und halte
    drücke ende
    drücke pfeil nach rechts
    und die letzten beiden ca 180 mal wiederholen.
    dann wenn alles so ausgewählt backspace.


    dann ist der eintrag sauber weg. das makro konnte ich fehlerfrei binnen einer sekunde abspielen und widerholen lassen. jetzt habe ich auf "widerhole 100 mal" geklickt. (habe mich nicht getraut 1000 reinzuschreiben) nun hängt er. nunja warten wir mal ab wie lange er braucht um fertig zu werden.


    Edit: Tja nach dem 10´000 Versuch stellt sich raus, dass dieses Programm einfach zu dumm ist, um mit so großen Dateien umzugehen. Nachdem mehrere auf einmal zu viel für ihn waren, habe ich mich entschlosse, das Makro auf ein Shortcut zu legen, und immer zu tippen. Das funktioniert 5-6 mal gut, und dann kackt das Programm einfach ab, und friert ein. Speichern dauert teilweise bis zu 30 Sekunden, und bei einem zwischendurch-Versuch ob das denn funktioniert hat, hat sich wohl irgendwo auch noch ein Fehler reingeschlichen, der das zurück "serez-en" unmöglich macht, und die xml also unbrauchbar ist...


    Ich könnte hier echt im Kreis springen. Und das Internet ist nur voll von irgendwelchen Triviallösungen via Batch die alle nur so einfache Sachen kennen wie "find and replace" ja das kann man ja mal über 20´000 Zeilen jagen, und mit so schön vielen Variablen wie den ID's und den Positionen etc. wird das bestimmt suuuuper funktionieren.


    Meine Güte warum kann man nicht mal ein Script-Programm entwickeln, dass wie der Flowgraph von der Cryengine funktioniert.
    Wenn gefunden, dann pfeil raus, in anderen kasten rein etc. Da hätte ich das schon in einer Minute zusammengebastelt.


    Alle sagen mir ich solle Informatik studieren... ja ja ja... ich weiß genau warum ich so einen hass auf html xml c++ etc. habe. Das ist der Fluch des Autisten. Stumpfe Programmierung wie in den 80ern, bei Menschen wie mir wo das Gehirn nur visuell und grafisch arbeiten kann. Das kann ja nicht gut gehen. Ich bekomme die kompliziertesten Logiken und Programme beherrscht. Aber sobald man irgendwo nur text vor der Nase hat, ist es vorbei. Ein Grund warum ich niemals studieren kann, weil ich das Abitur nicht schaffe. Ich kapiere diese stummen Matheformeln einfach nicht, und die Logik einer weiteren Fremdsprache bekomme ich auch nicht hin. In beiden Fächern um die 2-3 Punkte nur. Während ich in Physik 14 Punkte habe... Aber um was küsntlerisches zu studieren braucht man ja Polynomdivision... verkehrte Welt...


    Sorry ich habe gerade schon wieder meine 5 Minuten und bin schon wieder angeekelt von Programmen die so tun, als könnten sie alles, aber sich bei etwas spezielleren Dateigrößen einfach aufhängen.

  • Okay das Mehrzeilige Ersetzen ist ja schonmal ein guter Anfang. Aber wie schreibe ich jetzt zum Beispiel die ID etc. um, damit er versteht dass das eine Variable sein soll? Ich habe jetzt einen solchen Block eingefügt. Jetzt muss ich in die ID Felder und anderen Sachen nur noch eintragen, dass es variabele werte sein müssen.
    Ausserdem verstehe ich nicht, wie ich regex ausdrücke da einbringe. Die kann ich doch nicht einfach so als klartext da reinschreiben oder? Also ich meine die 10 Zahlen der ID's durch zzzzzzzzzz ersetzen. Denn da steht z wäre beliebiges Zeichen. Aber das wirkt mir jetzt irgendwie zu einfach, als dass es das schon war. Da muss doch irgendwas hin, was ihm sagt, dass es jetzt mit einem regex befehl weiter geht oder nicht?

  • Lass mir mal bitte deine Tracks.bin zukommen und sag mir ganz genau, was gelöscht werden muss.
    Damit das Trauerspiel mal ein (hoffentlich glückliches) Ende findet.

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

  • Ja, hab ich erhalten.
    Ganz schön dickes Teil mit 185 MB Größe als XML.


    Na mal gucken, wann ich heute dazu komme.

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

  • Ich hab mir mal einen kurzen Überblick verschafft.
    Einfaches Suchen Ersetzen oder gar mit Makro wird nicht klappen, weil die betreffenden Blöcke nicht immer die selbe Zeilenanzahl haben.
    Ferner sind nicht nur 2 verschiedene Weichenmotoren verbaut, sondern 4.
    Ich zähle
    1782x Automatic_Junction_Lever.xml
    134x Manual_Junction_Lever.xml
    plus 7 + 1 irgendwas anderes.
    = 1924


    Die letzten 8 kann man manuell entfernen.
    Für die anderen 1916 muss man sich was einfallen lassen.
    Derzeit habe ich nur die Idee, ein Script dafür zu schreiben, weil Makro und Suchen Ersetzen wie gesagt nicht klappt. Ich muss das erst mal bei einem leckeren Kaffee und einem Stückchen Nussplunder durchdenken, bevor ich irgendeine Aktivität am PC vornehme, die dann doch nur in einer Sackgasse endet. Vielleicht werden es auch 2 Nussplunder... mal gucken :)

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

  • Ich habe 1916 Einträge entfernt und ließ die geänderte Tracks.bin dem Prof zukommen (-->PM)
    Falls das nicht die Lösung war kann ich nicht weiter helfen. Tut mir leid.


    Die restlichen 7+1 Weichenantriebe musst du leider manuell entfernen. Dazu hatte ich keine Lust :P
    Weitere 1425 andere Weichenantriebe wurden noch gefunden, diese ließ ich aber unangetastet.


    Entfernt wurde von mir also nur:
    1782x "RWAustria/Austria/RailNetwork/Junctions/Automatic_Junction_Lever.xml"
    und
    134x "RWAustria/Austria/RailNetwork/Junctions/Manual_Junction_Lever.xml"


    Viel Erfolg!

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

  • Dann kann man mehrere Zeilen auf einmal löschen.


    *motz* So ist es. XML erfolgt in Codeblöcken und wo ein Codeblock Anfängt und wo dieser endet kann man sich aneignen, wenn man sich mit XML beschäftigt. Das kostet natürlich Zeit mal im Internet sich über XML zu informieren. "Self Html" wäre dann für Html und beantwortet viele Fragen,die der Hilfesuchende scheut wie der Teufel das Weihwasser. Sorry aber dass ist leider mein Eindruck.


    Ein Gleis kann ich auf die Grüne Wiese setzen auch mehr. Das setzen eines Gleises dauert 2 Minuten, der Bau einer Strecke mit oder ohne Fehler Monate. Da habe ich die Zeit aufzubringen oder ich kann es gleich lassen.


    Hilfe ja aber wernn hier Andere mal eben schnell eien Lösung anbieten sollen, weil ers so bequem ist, dann bekomme ich einen Dicken Hals. Von wegen "2100 Einträge" "Lever Codeblöcke" gibt es eine Hand voll. Siehe Bild in meinem vorherigen Beitrag.


    Gruß Norbert


    *püh* Wie lange habe ich denn jetzt dafür gebraucht, um erste Hilfe in XML zu erhalten? Weniger als 1 Minute.


    http://www.stefanheymann.de/xml/xmleinfuehrung.htm


    Schon kenne ich Start und Ende eines Codeblocks. *ohman* Unglaublich. Jetzt muss ich den Dreck nur noch löschen.


    Beispiel: <ORDER> Anfang


    Bla Bla
    Bla Bla usw.


    und das Bittere Ende sieht so aus </ORDER> Ist das schwer?


    Nächster Codeblock.


    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX So einfach ist das mit dem Codeblock


    <BlueprintID>
    <iBlueprintLibrary-cAbsoluteBlueprintID>
    <BlueprintSetID>
    <iBlueprintLibrary-cBlueprintSetID>
    <Provider d:type="cDeltaString">RWAustria</Provider>
    <Product d:type="cDeltaString">Austria</Product>
    </iBlueprintLibrary-cBlueprintSetID>
    </BlueprintSetID>
    <BlueprintID d:type="cDeltaString">RailNetwork\Junctions\Automatic_Junction_Lever.xml</BlueprintID>
    </iBlueprintLibrary-cAbsoluteBlueprintID>
    </BlueprintID>

  • Lieber Norbert, der codeblock, der einen einzigen Weichenhebel beschreibt, fängt mit <Network-cTrackNode d:id="1184616104"> und hört mit </Network-cTrackNode> auf.
    Ungefähr 200 Zeilen. Du löscht daraus 11 Zeilen und lässt ca. 190 Zeilen Datenmüll je Weichenhebel in der Tracks.bin drin.
    Brauchste nur weiter oben lesen, wurde alles schon geschrieben.
    StS

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