Autor Beitrag
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 18.03.10 15:19 
@Christian
Wollte vorhin schon was schreiben, wir werden dran denken:D

@Danielf

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
 XDocument doc = XDocument.Load(@"c:\XMLFileVersuch1.xml");

            treeView1.Nodes.Add("Quests");

            foreach (var quest in doc.Root.Descendants("Quests"))
            {
                TreeNode tr = new TreeNode(quest.Attribute("NAME").Value);
                tr.Tag = quest;
                treeView1.Nodes[0].Nodes[0].Nodes.Add(tr);
            }


Bin immer noch Anfaenger und halte mich gern an den Designer:p
Aber so funktioniert die Zuweisung super, wenn ich auch nicht geich
die Subnodes gefunden hatte:D
Danke dir. aber.....jetzt kann ich schlecht ein Image(index) zuweisen...
Das macht es ueber den Designer einfacher.

Und warum du mich nicht verstehst: - Ich hab eine andere Denkweise(in die wahrscheinlich falsche Richtung^^)

Aber ich denke, solangsam steig ich da durch.
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 18.03.10 15:31 
Ein image weißt du über
ausblenden C#-Quelltext
1:
2:
3:
4:
TreeNode tr;
tr.ImageIndex = //der entsprechende Schlüssel aus deiner ImageList zu.
bzw.
tr.SelectedImageIndex = //...

Solche Sachen kannst du (wenn du es über den Designer gemacht hast) sofort in der <form>.Designer.cs Datei nachschauen wie er es im Code gemacht hat, die Properties durchschauen oder bei MSDN nachschauen.

Da wird nun aber schon auf der zweiten Seite sind, würde ich vorschlagen, wenn es zu diesem Thema (Textdatei oder doch code) keine Fragen mehr gibt, machst du das nächste mal einen neues Thema auf.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 18.03.10 16:02 
Sowas schau ich grundsaetzlich vorher nach.Durch den Designer erfaehrt man schon vieles:)

Aber meine Sorge war ehr, das ich nicht etliche treenodes mit imagekeys
zuweisen wollte.Das macht sich im designer einfacher.Weil die Liste statisch bleibt.
(Auf gut deutsch: Ich brauch nichts updaten).Und ich habe eine bessere uebersicht(fuer mich selbst).

Wenn ich ein neues Thema aufmache, waere das zwar uebersichtlicher aber nicht gut(wuerde der mod sagen, nehm ich an).
Aber viel mehr Fragen werden nicht kommen, hoffe ich.

Ich versuch mal, mit dem auszukommen, was ihr geschrieben habt.
Das ist schon mehr, als ich erwartet hatte^^
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 18.03.10 18:42 
Ich bekomms nicht hin:(

Ich will eigentlich nur auf Quests[1] zugreifen und "innerText"
einem String zuweisen, den ich dann an die textbox uebergebe..
aber meine Versuche sind alles andere als Ueberagend.

Es ging, als ich Quests durchnummeriert hatte, ohne Nummerierung gehts
nicht...hab ich was uebersehen?
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
   private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            XDocument doc = XDocument.Load(@"c:\XMLFileVersuch1.xml");
            var quests = doc.Root.XPathSelectElements("Quests[1]/Quests[2]");

            foreach (var quest in quests)
            {
                string text = quest.Value;
                
                switch (e.Node.SelectedImageIndex)
                {
                    case 20:
                        richTextBox1.Text = text; 
                        break;
                }
            }
        }
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Do 18.03.10 18:55 
Ich kenne die Struktur deiner Xml-Datei nicht (ändert sich ja ständig ;) ).

Aber der XPath Ausdruck würde nur funktionieren wenn das Xml so aussieht:
ausblenden XML-Daten
1:
2:
3:
<Quests>
   <Quests>...</Quests>
</Quests>

Ich vermute dein XPath Ausdruck sollte "/Quests/Quest[2]" sein.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Do 18.03.10 20:32 
Naja, eigenmtlich habe ich das am Anfang als Beispiel genommen.

Es wuerde auch das gehen:
(ohne Tags)...was aber unschoen waere..

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
  <Quests NAME="Weapon Dealer's Letter">
    Deliver weapons list
    Exp 255, Gold 205
    1
    Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan
    None
  </Quests>



Die Finale Version ist das hier:

ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
144:
145:
146:
147:
148:
149:
150:
151:
152:
153:
154:
155:
156:
157:
158:
159:
160:
161:
162:
163:
164:
165:
166:
167:
168:
169:
170:
171:
172:
173:
174:
175:
176:
177:
178:
179:
180:
181:
182:
183:
184:
185:
186:
187:
188:
189:
190:
191:
192:
193:
194:
195:
196:
197:
198:
199:
200:
<?xml version="1.0" encoding="utf-8"?>

<Janganquestliste>
  <Quests NAME="Weapon Dealer's Letter">
    <mission>Deliver weapons list </mission>
    <Reward>Exp 255, Gold 205 </Reward>
    <form>1 </form>
    <npc>Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan </npc>
    <Monster>None</Monster>
  </Quests>
  <Quests NAME="Lost Child">
    <mission>Find one of the shoes of the child taken by one eyed monsters </mission>
    <Reward>Exp 375, Gold 475 </Reward>
    <form>1</form>
    <npc>Hwangno, village chief of Jangan</npc>
    <Monster>Small-eyed ghosts/big-eyed ghosts</Monster>
  </Quests>
  <Quests NAME="Weasel Battle">
    <mission>Hunt 40 Weasels </mission>
    <Reward>Exp 1900, Gold 1000 </Reward>
    <form>1</form>
    <npc>Iyang,a guard at the east gate of Jangan</npc>
    <Monster>Old Weasel/ Weasel</Monster>
  </Quests>
  <Quests NAME="Yangyun's Anxiety">
    <mission>Hunt 50 water ghosts </mission>
    <reward>Exp 3800 / 28 HP recovery herbs </reward>
    <form>1</form>
    <npc>Herbalist Yangyun of Jangan</npc>
    <Monster>Water ghost slaves/ Water ghosts</Monster>
  </Quests>
  <Quests NAME="Water ghost's poison">
    <mission>Collect 20 poisons of the Water Ghost</mission>
    <Reward>Exp 6600 /50 MP Recovery Herbs /4000 Sp </Reward>
    <form>1</form>
    <npc>Jangan Herbalist Yangun</npc>
    <Monster>Water Ghost Slave/ Water Ghost</Monster>
  </Quests>
  <Quests NAME="Sweeping Stone Ghost">
    <mission>Hunt 40 Tomb ghosts </mission>
    <Reward>Exp 4500 / Gold 1900 </Reward>
    <form>1</form>
    <npc>Sangnam, guard of the east gate of Jangan</npc>
    <Monster>broken tomb ghost/ tomb ghost</Monster>
  </Quests>
  <Quests NAME="Clearing Tomb Stone">
    <mission>Collect the stone scriptures of Prajnaparamita-Hridaya-Sutra (8 kinds)</mission>
    <Reward>Exp 10500 / Gold 3800 / 1 lowest level transport </Reward>
    <form>1</form>
    <npc>Buddhist Priest Jeonghye</npc>
    <Monster>Tomb stone ghosts</Monster>
  </Quests>
  <Quests NAME="Tree Spirit">
    <mission>Collect 30 bottles of Yeoha's black blood </mission>
    <Reward>Level 10 Weapon </Reward>
    <form>1</form>
    <npc>Exorcist Miaoryeong</npc>
    <Monster>Decayed Yeoha/Yeoha</Monster>
  </Quests>
  <Quests NAME="Adventurer's stone">
    <mission>Collect 20 Adventurer's stones </mission>
    <Reward>Gold 3500 /Sp 5000 /Adventurer's shift scroll x1[Increase agility by 20%, 1h] </Reward>
    <form>1</form>
    <npc>Jangan Adventurer Flora</npc>
    <Monster>Stone ghost/ Broken Stone ghost</Monster>
  </Quests>
  <Quests NAME="Sweeping Bandit Archer">
    <mission>Hunt 50 Bandit Archers </mission>
    <Reward>Exp 9500 / 50 MP Recovery Herbs </Reward>
    <form>1</form>
    <npc>Juho at the military camp of Jangan</npc>
    <Monster>Bandit Archers/ Bandit Bowmen</Monster>
  </Quests>
  <Quests NAME="Ground Purification">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Bandits Operational Map">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Sweeping Bandit">
    <mission>Hunt 50 Bandits </mission>
    <Reward>Exp 14500 / 50 Vigor recovery herbs </Reward>
    <form>1</form>
    <npc>Guild Manager Leebaek</npc>
    <Monster>Bandit Subordinate/ Bandit</Monster>
  </Quests>
  <Quests NAME="Tiger's grinding tooth">
    <mission>Collect 10 Tiger's grinding teeth  </mission>
    <Reward>Exp 15300/ Gold 4400 / Sp 5000 </Reward>
    <form>1</form>
    <npc>Jangan Specialty Trader Jodaesan</npc>
    <Monster>Young Tiger/ Tiger</Monster>
  </Quests>
  <Quests NAME="Tiger hunting competition">
    <mission>Hunt 1 champion Tiger 20 Tigers 20 little tigers </mission>
    <Reward>Exp 6700 / 63 HP Recovery Potions(Small) Sp 2050 </Reward>
    <form>1</form>
    <npc>Jangan General Sonhyeon</npc>
    <Monster>little tiger, tiger, champion tiger</Monster>
  </Quests>
  <Quests NAME="Culsans Anger">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="White Tiger Hunting">
    <mission>Hunt 40 white tigers </mission>
    <Reward>Exp 12500 / GOLD 4300 </Reward>
    <form>1</form>
    <npc>Machun the stable keeper of Jangan </npc>
    <Monster>White Tiger</Monster>
  </Quests>
  <Quests NAME="Stolen Sword">
    <mission>Bring back the stolen sword </mission>
    <Reward>Exp 18800/ GOLD 5050 / Sp 5000 </Reward>
    <form>1</form>
    <npc>Jangan Hunter Associate Gwakwi</npc>
    <Monster>Bandits</Monster>
  </Quests>
  <Quests NAME="Herb Delivery">
    <mission>Deliver a bundle of herbs </mission>
    <Reward>Exp 14400 /GOLD 3800/ Sp 3600 </Reward>
    <form>1</form>
    <npc>Jangan Herbalist Yangyun / Chau a ticket seller at a ferry of Jangan</npc>
    <Monster>None</Monster>
  </Quests>
  <Quests NAME="Yangyun s Request">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Black Tiger Claw">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="White Tiger Skin">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Folk Remedy">
    <mission>Collect 100 Chakji's eyes </mission>
    <Reward>Exp 112000 /GOLD 28500 /sp Exp 25000 </Reward>
    <form>1</form>
    <npc>Jangan Ferry Ticket Seller Chau</npc>
    <Monster>Chakji worker/ Chakji</Monster>
  </Quests>
  <Quests NAME="Wangwon's Request">
    <mission>Talk to Lottery Seller Wangwon </mission>
    <Reward>None </Reward>
    <form>1</form>
    <npc>Jangan Lottery Seller Wangwon</npc>
    <Monster>None</Monster>
  </Quests>
  <Quests NAME="Finding Chinese Liquor">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Finding Europe Liquor">
    <mission></mission>
    <Reward></Reward>
    <form>1</form>
    <npc></npc>
    <Monster></Monster>
  </Quests>
  <Quests NAME="Huhoan's Book">
    <mission>Deliver Huhoan's account book </mission>
    <Reward>Exp 320400 /GOLD 340000 /Sp 187500  /1 patience's fruit (hit ratio by 20%, parry rate by 20%, 1h) </Reward>
    <form>1</form>
    <npc>Jangan Lottery Seller Wangwon</npc>
    <Monster>None</Monster>
  </Quests>
  <Quests NAME="Drinking With Huhoan">
    <mission>Obtain Huhoan's account book </mission>
    <Reward>Huhoan's account book </Reward>
    <form>unlimited</form>
    <npc>Casino Guardian Huhoan of Jangan.</npc>
    <Monster>None</Monster>
  </Quests>
</Janganquestliste>


Hier mal meine letzten versuche, die aber nicht so ganz klappen.

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
       private void treeView1_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("c:/XMLFileVersuch1.xml");

            XmlNodeList Quest = doc.GetElementsByTagName("Quests");

            foreach (XmlNode node in Quest)
            {
                //XmlElement QuestElement = (XmlElement)node;
                string q1 = node.ChildNodes[1].Value;
                //string q1 = QuestElement.GetElementsByTagName("Quests")[1].Value;
                //string q2 = QuestElement.GetElementsByTagName("Quests")[2].Value;
                switch (e.Node.SelectedImageIndex)
                {
                    case 20:
                        richTextBox1.Clear();
                        richTextBox1.Text = q1; 
                        break;
                    case 21:
                        richTextBox1.Clear();
                        //richTextBox1.Text = q2;
                        break
                }
            }
        }
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 19.03.10 09:55 
ausblenden C#-Quelltext
1:
XmlNodeList Quest = doc.GetElementsByTagName("Quests");					


Hiermit bekommst du alle Element deren lokaler Name Quests ist. Das ist bei der gegebenen Xml auch das Root-Element. Also musst du entweder sagen doc.Root.Elements("Quests") oder (was ich sinnvoller fände) bei der Xml ein Quest auch als Quest zu bezeichnen und nicht als Quests.

Auch von der Verwendung von node.ChildNodes[1] rate ich dir ab. Die Xml-Definition sieht keine Einhaltung von Reihenfolge der Elemente vor. Sie wird zwar meistens unterstützt, aber verlassen kannst du dich darauf nicht. Deshalb gib immer den Element-Name an.

Das Dokument würde ich auch nicht an dieser Stelle laden... einmal Laden und die Referenz global merken... (bzw. elemente im Tag "verstecken"! ;))
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 19.03.10 11:04 
Guten Morgen^^

Also meinst du das so:

ausblenden XML-Daten
1:
2:
3:
4:
5:
<Quests>
 <Quest>
    <Inhalte> </Inhalte>
 </Quest>
</Quests>


?

ausblenden C#-Quelltext
1:
XmlNodeList Quest = doc.GetElementsByTagName("Quest"); //?					


Wie sollte ich denn sonst auf "alle" childnodes zugreifen?
Ich haette ja gerne alle...und will nur einmal den "ganzen"
Inhalt auslesen(also Innertext...von "mission + name+ npc etc")

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
<Quests>
->Inhalt von hier...
  <Quests NAME="Weapon Dealer's Letter">
    <mission>Deliver weapons list</mission>
    <Reward>Exp 255, Gold 205</Reward>
    <form>1</form>
    <npc>Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan</npc>
    <Monster>None</Monster>
  </Quests>
<---bis hier...in eine Textbox
</Quests>


und bisher funktionierte es nur einmal.Allerdings hatte ich dann den Tag "Quest"
nummeriert.

EDIT: Das der Index nicht funkioniert, habe ich gemerkt^^
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 19.03.10 11:26 
Ja so mein ich es und der Code passt dann auch.

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
<Quests>
  <Quest NAME="Weapon Dealer's Letter">
    <mission>Deliver weapons list</mission>
    <Reward>Exp 255, Gold 205</Reward>
    <form>1</form>
    <npc>Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan</npc>
    <Monster>None</Monster>
  </Quest>
</Quests>


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
XDocument doc = XDocument.Load("xmlfile.xml");
// 1. Quest
var firstQuest = doc.Root.Element("Quest");

// beliebies Quest
int questNr = 4;
var Quest = doc.XPathSelectElement(string.Format("/Quests/Quest[{0}]", questNr);

string content = firstQuest.Value;
string innerXml = firstQuest.ToString();


wobei content dann:
Deliver weapons list
Exp 255, Gold 205
1
Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan ...

und innerXml:
ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
<Quest NAME="Weapon Dealer's Letter">
    <mission>Deliver weapons list</mission>
    <Reward>Exp 255, Gold 205</Reward>
    <form>1</form>
    <npc>Chulsan the blacksmith of Jangan / Jingyo,a guard at the south gate of Jangan</npc>
    <Monster>None</Monster>
  </Quest>


Aber du sollst NICHT auf den ganzen Inhalt einfach so anzeigen. Der Vorteil von Xml sind die Strukturierte Daten. Bitte greife doch dann auch strukturiert zu und mach eine konkrete Zuweisung und nicht einfach blumb den Inhalt.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 19.03.10 14:12 
Danke dir, werd mich dran halten...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void button1_Click(object sender, EventArgs e)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load("c:/XMLFileVersuch1.xml");

            XmlNode myRootNode = doc.DocumentElement; 

            XmlNodeList allQuests = myRootNode.SelectNodes("./Quests");
            int Questcount = allQuests.Count; 
            MessageBox.Show("Anzahl der Questen: " + Questcount.ToString() + "!");
            MessageBox.Show(allQuests.Item(0).InnerText + allQuests.Item(1).InnerText);
            MessageBox.Show(allQuests.Item(1).Attributes[0].Value);

        }

Allerdings gibt mir oberes Bsp endlich das, was ich die ganze Zeit wollte^^
(nur eben ueber ne message box als Text).

Du meintest zwar, das der Index nicht immer genau ist...aber wenigstens versteh
ich so das Prinzip, und arbeite mich jetzt Schrittweise vor.

Danke fuer deine Zeit und Hilfe:)
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 19.03.10 14:40 
Wenn du meinst... :((

Hab dich auch gesagt du sollst XDocument, XElement und Co verwenden, nicht XmlDocument& CO ...

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
XDocument doc = XDocument.Load("C:/XMLFileVersuch1.xml");
var quests = doc.Root.Elements();

MessageBox.Show("Anzahl der Quests: " + quests.Count<XElement>());
MessageBox.Show(quests.ElementAt<XElement>(0).Value);
MessageBox.Show(quests.ElementAt<XElement>(1).Value);
MessageBox.Show(quests.ElementAt<XElement>(0).Attribute("NAME").Value);
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 19.03.10 14:49 
Oh...da hast du Recht, danke schoen.Dann fahr ich in dieser Richtiung weiter:)

Wieso ist der Unterschied denn so gravierend??
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 19.03.10 14:54 
user profile icondanielf hat folgendes geschrieben Zum zitierten Posting springen:

Die Verwendung von XElement laut Kha schon, weil es schneller ist.


Außerdem Implementiert es neue Schnittstellen und ist zu komfortabler.
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 19.03.10 15:08 
und komplizierter;)...aber ich versuchs damit weiter.
Und ...das ich auf die Attribue einzeln zugreife...
Am besten waere doch immer noch eine ID oder?

Pseudocode:
- lade Xml
- deklariere
- selektiere Xpath node(Quest[@id="1"]/Quest[@id="2"]etc)
- foreach-> innertext von mission, name etc auflisten

switch(e.node.selectedImageIndex)

case:...
if(quest id == 1)->je nach ID konoten waehlen
mission + name + etc in richtextbox
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 19.03.10 15:17 
Ich hab grad mal bisschen gegoogelt um mehr Aussagen für das Pro oder Contra zu finden:
stackoverflow.com/qu...ument-or-xmldocument
msdn.microsoft.com/e...ibrary/bb387021.aspx

Also ich denke das macht Sinn :)

Also wenn dir die Reihenfolge wichtig ist und sie nicht der im Dokument entspricht, brauchst du eine ID, ansonsten nicht.

Mittels XPath oder eben über ElementAt kannst du ja eh direkt auf ein Element zugreifen.

Ein foreach auf die Unterelemente würde ich auch nicht machen. Dann ist deine Ansicht abhängig von den Daten. Da würde ich bei der geringen Anzahl an Elementen es manuell machen.

//Edit
Performance-Vergleiche:
www.nearinfinity.com..._linq_to_sql_vs.html
www.31a2ba2a-b718-11...out-xmldocument.html
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Fr 19.03.10 15:43 
Ja...deine Links haben mich ueberzeugt:D...ich hab es teilweise auch durch meine googlesuche selbst gesehen aber nie drauf geachtet.

Ok, ID und foreeach ueberfluessig...^^
Mehr Elemente werden es auch nicht, nur die Questanzahl steigt locker auf 300.
Und es werden spaeter noch mehr.

Also waere das sinnvollste doch der index um alles der textbox zuzuweisen, je nach
selektierter "treeview"-nodes?
->So waere es fuer mich am einfachsten aber ich muss ja noch an
spaeter denken, es soll ja auch online genutzt werden...
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
            XDocument doc = XDocument.Load("C:/XMLFileVersuch1.xml");
            //var quests = doc.XPathSelectElements("Quest[@ID=1]/Quest[@ID=2]");

            var quests = doc.Root.Elements();

           string quest1 = quests.ElementAt<XElement>(0).Value);
           string quest2 = quests.ElementAt<XElement>(1).Value);

           // per switch /case die Elemente zuweisen



Da faellt mir ein, bei meinem letzten Projekt hatte ich ein aehnliches Problem.
um alle MIDI dateien aus einem Ordner zu lesen und zu selektieren
haette ich ueber 400 strings deklarieren muessen...nach ueber 1 monat hat ich es dann
endlich raus:D

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {
                foreach (ListViewItem item in listView1.SelectedItems)
                {
                    string path = Application.StartupPath;
                    if (FF7 == true) { path = path + "\\Bilder\\FF7\\Music\\cd1\\" + item.Text; }
                    if (FF8 == true) { path = path + "\\Bilder\\FF8\\Music\\cd1\\" + item.Text; }
                    if (FF9 == true) { path = path + "\\Bilder\\FF9\\Music\\cd1\\" + item.Text; }
                    if (FF10 == true) { path = path + "\\Bilder\\FF10\\Music\\cd1\\" + item.Text; }

                    if (listView1.SelectedItems.Count != 0)
                        axWindowsMediaPlayer1.URL = path;
                }
                axWindowsMediaPlayer1.Ctlcontrols.play();
            }
            catch (Exception e1) {
                MessageBox.Show(e1.Message);
            }
        }
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 21.03.10 17:09 
Ich hab mir gedacht, ich loese das nun ueber eine Schleife
die die Anzahl der Elemente hochzaehlt und dann je nach Attribute
ausgibt.

Relativ, ob ich dabei dann (Value) fuer "gebe alles aus" verwende
oder eben einzeln auf die 4 attribute zugreife.


ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
        private void button1_Click(object sender, EventArgs e)
        {
            XDocument doc1 = XDocument.Load("C:/Chinaquesten.xml");
            var quests = doc1.Root.Elements();

            for (int i = 0; i < quests.Count<XElement>(); i++ )
            {
               //if (att.Value == "1")
                    MessageBox.Show(quests.ElementAt<XElement>(i).Value);

            }
        }
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: So 21.03.10 17:56 
Ich habe den Überblick verloren, was du eigentlich erreichen willst, aber wie wäre es mit einer foreach-Schleife, die ggf. einen Index mit hochzählt?

_________________
>λ=
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: So 21.03.10 19:28 
Nunja...

Ich habe ja Questen.Diese Unterteilen sich in Abschnitte.
Und zwar:

mission, reward,name,form, monster

Alle 5 Abschnitte sind eingegrentzt mit <Quest> Tags.

ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
<Quests>
 <Quest>
  <name></name>
  <monster></monster>
  <....>
 <Quest>
<Quests>


Ich wollte nun alle 5 Abschnitte "1ner Quest" in einer Textbox
wiedergeben, je nachdem welchen Treenode man angeklickt hat.
Und zwar den Value wert von <Quest>.

Als Attribute von <Quest> habe ich "name" und "ID" festgelegt.

Ueber diese Attribute und eine foreach schleife(oder for)
wollte ich dann den Value wert auslesen
(Wenn <Quest> ausgewaehlt UND ID == 1 dann setze genau die Quest
von ID 1 in die Textbox).


Und dann kam ich leicht durcheinander mit den ganzen Moeglichkeiten zum
auslesen, ganz abgesehen von der Methode zum auslesen des XML documents.
(nicht "xml" sondern "x").

Ich hoffe, die Zusammenfassung erklaert das gut^^

Moderiert von user profile iconChristian S.: Color- durch Xml-Tags ersetzt
Chiyoko Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 298
Erhaltene Danke: 8

Win 98, Win Xp, Win 10
C# / C (VS 2019)
BeitragVerfasst: Mo 22.03.10 12:27 
So, ich habs versucht...auf verschiedenen Wegen aber mir wird immer nur
die erste Quest ausgegeben.Danach bekomm ich einen Error, der wie folgt lautet:

Index ausserhalb des Wertebereichs....

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
        private void button1_Click(object sender, EventArgs e)
        {
            XDocument doc1 = XDocument.Load("C:/Chinaquesten.xml");
            var quests = doc1.XPathSelectElements("Chinaquesten/Janganquestliste/Quests/Quest");

            foreach (var quest in quests)
            {
                int id = (int)quest.Attribute("ID");

                // zur spaeteren Zuweisung...
                string questName = quest.Element("name").Value;
                string mission = quest.Element("mission").Value;
                string reward = quest.Element("Reward").Value;
                string form = quest.Element("form").Value;
                string npc = quest.Element("npc").Value;
                string monster = quest.Element("Monster").Value;

                
                MessageBox.Show(quests.ElementAt<XElement>(id).Value);
                id++;

            }
        }


ausblenden XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
<Chinaquesten>
  <Janganquestliste>
    <Quests>
      <Quest ID="1">
        <name>Weapon Dealer's Letter</name>
        <mission>Deliver weapons list</mission>
        <Reward>Exp 255, Gold 205</Reward>
        <form>1</form>
        <npc>Chulsan(Jangan blacksmith) / Jingyo</npc>
        <Monster>None</Monster>
      </Quest>
    </Quests>
...etc
 <Janganquestliste>
<Chinaquesten>