Autor Beitrag
Actionscript-Gordon
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Fr 29.01.10 11:52 
Hi ich habe folgendes Problem ich versuche eine Komplexe XML einzulesen in der auch viele für mich nicht wichtige Daten vorhanden sind. Ich gebe euch am Besten mal ein Beispiel:

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<Incentive IncentiveName="Test30">
        <Conditions>
          <ProductCondition
            Product="123,124,125"
            ProductRatio="1;1;1"/>
        </Conditions>
        <Rewards>
          <ProductReward
            Product="126"
        </Rewards>
      </Incentive>


Mein Problem ist nun das ich mehrere <Incentive> habe und nicht genau weiss wie ich diese auslesen lassen kann. Deserilisation wäre eine Möglichkeit die mir nun auch schon im Kopf rum schwirrt. Ich kann ja mit folgendem Code deserialisierte Xml-Dokumente wie Klassen aufrufen:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
string reward1 = "Test30";

            var i1 = new IncentivesIncentive();
            i1.IncentiveName = reward1;
            i1.Rewards = new IncentivesIncentiveRewards();
            i1.Rewards.ProductReward = new IncentivesIncentiveRewardsProductReward();
            i1.Rewards.ProductReward.Product = "138";


Jedoch kann ich eine Xml-Datei während der Laufzeit Deserialisieren manipulieren und dann wieder Serialisieren? Falls ja wie?

Moderiert von user profile iconChristian S.: XML-Tags hinzugefügt
Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt

Oh ja Tags vergessen danke ^^


Zuletzt bearbeitet von Actionscript-Gordon am Mi 03.02.10 17:17, insgesamt 1-mal bearbeitet
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Fr 29.01.10 17:01 
:welcome:

user profile iconActionscript-Gordon hat folgendes geschrieben Zum zitierten Posting springen:
Ich kann ja mit folgendem Code deserialisierte Xml-Dokumente wie Klassen aufrufen:
Würde mal behaupten, das sind Objekte ;) .

user profile iconActionscript-Gordon hat folgendes geschrieben Zum zitierten Posting springen:
Jedoch kann ich eine Xml-Datei während der Laufzeit Deserialisieren manipulieren und dann wieder Serialisieren? Falls ja wie?
Natürlich, das ist ja eigentlich die Hauptaufgabe von Serialisierung. Hast du dich denn schon darüber informiert / wie weit bist du gekommen?

_________________
>λ=
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 01.02.10 15:26 
Hm ich finde eifnach nichts was mit weiterhelfen kann ich sehe immer nur den gleichen befehlt um den ganzen Bereich du deserialisieren. Wie kann ich jetzt aber erst eine datei deserialiseren und dann bestimmte dinge darin aufrufen ist ist mir noch etwas schleierhaft. Es würde mir natürlich ein kleiner denkanstoß reichen unter dem ich googlen kann aber wie gesagt ich suche nun seit 2 tagen danach und bei google gehen mir in der 4ten Seite langsam die Ideeen aus ^^
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 01.02.10 15:39 
Naja, den Begriff Serialisieren hast du ja schon. C# (GalileoOpenbook) hat darüber ja ein einfaches Kapitel.

Im Prinzip hast du:
Objekt --serialisierung--> Datei
Datei --deserialisieren--> Objekt

Wie du ein Objekt änderst ist dir ja klar?!

Wo ist dann das Problem?

Gruß Daniel
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 01.02.10 17:05 
ich möchte es ja genau anders herum machen. Ich möchte eine Xml Deserialisieren die dann zur laufzeit verändern und dann wieder Seriealisieren oder muss ich die Datei dabei woanders zwischenspeichern?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mo 01.02.10 17:14 
Dann mach doch :o

Wieso die Datei zwischenspeichern? Du arbeitest doch dann mit dem Objekt ...
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
            System.Xml.Serialization.XmlSerializer s = new System.Xml.Serialization.XmlSerializer(typeof(object));
            FileInfo b = new FileInfo("blub");

            // dserialisieren
            MyObject obj = null;
            using(Stream stream = b.OpenRead())
            {
                obj = (MyObject) s.Deserialize(stream);
            }

            // object verändern
            obj.Value = 5;

            // serialisieren
            using (Stream stream = b.OpenWrite())
            {
                s.Serialize(stream, obj);
            }
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mo 01.02.10 17:24 
Ah das tut mir ja fast schon selber weh. Ich definiere das Objekt ja beim erstellen dann kann ich es natürlich auch verwenden.

Ich verstehe nicht wie mir das nicht auffallen konnte°° vielen dank ^^
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 03.02.10 17:16 
Hm könntet ihr mir noch einmal helfen wie ich das Objekt nach dem Incentivename durchsuche?
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 03.02.10 17:24 
Nach dem was? Nach was durchsuchen?

Du sprichst in Rätsel ....


Aber wenn ich alle Puzzleteile zusammenfüge, sie durch ein Hexler lasse, durch den Ventilator schicke und mir anschaue wie sie auf dem Boden liegen bekomm ich es raus ;)

Ich würde mal sagen, dass du gar kein Objekt hast was dem Xml entspricht. Und darüber hinaus kannst du das Xml-Dokument auch nicht anpassen. Deshalb würde ich sagen du Brauchst ein Objekt, dass dein Informationen repräsentiert. Nun gehst du hin und ließt das Xml ein. Für jeden "Incentive"-Knoten erzeugst du dann dieses Objekt was du wiederum in die Liste packst... und schon tut es ;)
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Mi 03.02.10 17:49 
Hm ich glaube wir reden an einernader vorbei ^^

Hmm grob gesagt möchte ich in einer XML bestimmte Bereiche suchen und darin Werte verändern. Vorbild für diese XML wäre das beispiel ganz oben.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 03.02.10 17:57 
Ach es handelt sich um ein neues Thema/Fragestellung... dann mach auch einen neuen Thread auf.

Um ein Xml zu durchsuchen gibt es die programmiersprachenunabhängige Xpath-Ausdrücke. In .NET implementiert diese in XDocument oder XmlDocument (XDocument ist besser... laut KHA ;)). Damit solltest du genug Input haben um nachzuschauen wie du ein Xml modifizieren kannst.
Actionscript-Gordon Threadstarter
Hält's aus hier
Beiträge: 7



BeitragVerfasst: Do 04.02.10 10:32 
Danke