Autor Beitrag
Schoppenhonne
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: So 11.04.21 12:24 
Hallo liebe Community,

seit gut einem Monat bin ich hier und mir wurde schon bei 2 Problemen geholfen. Durch Eure Hilfe und zwischenzeitig vielem Lesen und Probieren ist es mir nun gelungen, eine XML-Datei nun automatisch auszulesen, Werte mit Datenbank-Einträgen zu vergleichen, gegebenfalls zu ersetzen und die Xml-Datei dann wieder (unter einem anderen Namen) zu speichern.

Bisher habe ich das immer manuell mit einem Editor erledigt und mache es auch weiterhin, denn ich kann die Datei so noch nicht verwenden. Sie ist durcheinander. Bei Verwendung von XDocument bzw. XmlDocument war das nicht passiert, da wurde die Datei nur beschrieben. Aber der Serializer zerpflückt ja die Datei und setzt sie wieder zusammen.

Nun bin ich am Überlegen, ob ich weitermachen soll, obwohl ich nicht weiß, wie ich Ordnung in die neue Datei bekomme,
oder ob ich einen anderen Weg gehe: Zeilenweise auslesen und mit 1000 IF-Anweisungen arbeiten, um alles abzufangen.

Was meint Ihr ist besser?

Und bekommt man mit der Serialize-Methode überhaupt die zu erstellende Datei so hin, wie das Original? Und wenn ja: Hat jemand einen Tipp?

Ich weiß: wieder viele Fragen. Aber vielleicht bekomme ich die ja beantwortet.

Einen schönen Sonntag für Euch alle und

Viele Grüße
Schoppenhonne

Moderiert von user profile iconTh69: Titel (leicht) geändert.
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 11.04.21 13:47 
Die Reihenfolge von Dingen in der XML Datei (solang die Pfade stimmen, heißt die Schachtelung in Tags) sollte eigentlich völlig egal sein. Wenn das doch irgendwie relevant ist bei dir zeig es.
Schoppenhonne Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 19



BeitragVerfasst: So 11.04.21 14:54 
Hallo Ralf,

ja, ich glaube auch, dass die Reihenfolge erst mal nichts ausmacht.

Vielen Dank, dass ich jetzt noch zeigen darf, was ich meine.

Nur leider konnte ich das Formular nicht abschicken, weil es zu viele Zeichen sind.

Soll ich Dateien hochladen (XML vorher und nacher, Code und Klasse)?
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4700
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: So 11.04.21 17:09 
Nö. Wenn dir bewusst ist das die Reihenfolge irrelevant ist gibt es ja nix mehr zu zeigen.
Wenn du etwas hast wo die Reihenfolge wichtig ist zeig das relevante XML (tatsächlich gekürzt auf das relevante)
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: So 11.04.21 22:25 
Moin :-)
Solange du wirklich nur Werte ersetzt, solltest du doch eigentlich mit XElement & co auskommen.

Der Punkt ist eben: Wenn du die Reihenfolge behalten willst, dann müsst du bei den XML-Klassen bleiben. Die sollten in Dokumenten-Reihenfolge bleiben und diese erhalten. Man kann dann auch so Sachen machen wie "Kindelemente Alphabetisch sortieren nach Wert des Attributs name" - Obwohl die Reihenfolge ja oft keine Bedeutung hat. (Das Schema kann aber eine bestimmte Reihenfolge fordern!)


Der Serializer ist logisch eine Ebene drüber. Den interessiert dann nur noch die Daten und die Dokumentenabfolge geht verloren. => Ich würde mich auf XDocument und XElement beschränken, wenn die Reihenfolge wichtig ist.
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Mo 12.04.21 00:06 
Wenn's nur um das Ersetzen einzelner Werte geht, lohnt ein Blick auf XPath. Damit kann man denkbar einfach das konkrete Element suchen und dann weiter arbeiten, das spart einiges an Code.
Wenn es aber um Performance geht bzw. deine Datei so groß ist, dass der XDocument/XmlDocument zu langsam sind, lohnt der Blick auf XmlReader und XmlWriter, die sind sozusagen die auf Streams aufbauende Grundlage, mit der alles Andere arbeitet.

Um welche Größenordnung reden wir denn hier?