XML ingame speichern ">" wird zu ">"

  • Moin..


    Wie die Überschrift schon sagt versuche ich ne XML Datei ingame zu ändern und auch zu speichern, die XML enthält Indexe und damit natürlich auch Dinge wie 1>4|1 die dann aber nach dem speichern in 1>4|1 geändert sind..
    An den Indexen selbst wird durch mein Script nix verändert..


    Gibts da irgend ne Lösung? Oder ist das "eben einfach so" und ich muss mir die Idee aus dem Kopf werfen Fahrzeug-XML's ingame zu ändern?



    LG

  • Ist die XML nicht UTF-8 kodiert? Weil damit müsste das eigentlich korrekt funktionieren.
    Oder fügst du die Indexe irgendwo als Inhalt von Tags ein, anstatt als Attribute? Weil als Inhalt müsstest du ein CDATA verwenden, weil du sonst ja die XML Syntax zerschießen würdest.

  • Naja die XML müssten schon UTF sein hab es mit verschiedenen XML's von aktuellen Mods probiert.. Werde aber zur Sicherheit mal mit den Standard XML's probieren aber macht mir ja wenig Sinn wenn es mit den meisten Mods nicht funktioniert.


    Wie gesagt ich ändere die Indexe an der XML nicht, ich lese die Fahrzeug XML aus für ein paar Werte, lösche ein paar Einträge und füge neue hinzu..


    Könnte natürlich die gesamte XML auf das > Zeichen durchsuchen und alle Werte dann neu schreiben, vielleicht würde es dann gehen? Mal testen was passiert wenn ich setXMLString(xml, "vehicle.test#testAttribut", "1>3|1") mache.. Wenn dann das > korrekt dargestellt wird wäre das wohl ne Variante.
    Aber sehr Zeitaufwändig was Rechenzeit betrifft (ok eher zweitrangig in diesem Fall) aber auch was den Code angeht.. :D



    Bzw. konkret versuche ich ne Fahrzeug XML auf den MR Mod zu konvertieren vom Spiel aus.. Wollte den Prozess irgendwie automatisieren und bevor ich mich da irgendwie in Visual Basic vertiefe was XML Bearbeitung angeht warum nicht gleich den LS nutzen der schon alle nötigen Funktionen hat und die ich auch hinbekomme ohne ewiges googlen. Naja.. So weit die Theorie..



    LG

  • Also hab jetzt mal ausprobiert:
    setXMLString(tempXML, "vehicle.testTag#testAttribute", "1>3|1" )
    ergibt
    <testTag testAttribute="1&gt;3|1" />


    Also hilft es nix wenn ich alle Einträge mit > neu setzen würde..


    Habe ebenfalls mit XML's ausm Standardspiel von den Deutz probiert.. Genau das selbe. Scheint als würde das nicht funktionieren.. Schade..


    Trotzdem danke für deine Hilfe :)



    LG

  • Ich habe mich auch schon mit dem automatisierten abändern von Mods(xml) beschäftigt. Könnte die .NET Anwendung bestimmt auf das MR-Ready "machen" portieren. Falls es mehr Interessenten gibt, würde ich das wohl machen.


    Darüber hinaus könnte man ModDesc und i3d ebenfalls passend editieren...



    Grüße Kai

  • Ich denke nicht dass escapen hier helfen würde. Ein ">" ist m.W. ja keine RegEx.


    modelleicher: Für mich sieht es stark danach aus als wäre entweder die .xml-Datei nicht UTF-8 (ohne BOM), oder der Speicherfunktion ist das egal.
    Wenn ersteres: versuch wirklich nochmal die Datei auf UTF-8 ohne BOM zu forcieren. Wenn letzteres: es sieht zwar sehr unschön aus, aber an sich wäre es auch egal. Du müsstest nur beim Laden sicherstellen dass die encoded entities wieder decoded werden. Könntest dir also ne kleine Dekodier-Tabelle erstellen und dann per RegEx oder gsub oder beidem wieder in ">" usw. dekodieren.


    Btw, ich denke Giants hat eine UTF-8 Encode-Funktion beim Vehicle speichern drin, damit es mit den Mod-Dateinamen zu keinen Problemen kommt.

  • Manchmal ist der einfachste Weg wohl doch der richtige.. Das Spiel scheint es überhaupt nicht zu stören dass das > entsprechend kodiert wird. Sieht zwar wirklich nicht schön aus und dürfte einige Leute verwirren, funktioniert aber.. Danke JakobT, und auch die anderen für eure Ideen ;)




    LG

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!