Ja, nu komt bij mij ook de vraag op (nav
dit): hoe lees je het uit als je alles in elementen stopt?
Ikzelf had in de vorige versie van een programma alle eigenschappen in attributen gestopt, en alleen subelementen als element. Bij het uitlezen hoefde ik me dan niet druk te maken over de volgorde en het afwisselen van subelementen en data.
Is hier een standaard oplossing voor, als je wel alles in elemtenten stop? Dat je bijvoorbeeld in een while-loopje uitlijst en dan in een switch bepaald wat je met het huidige element doet? Lijkt mij vrij omslachtig werken, maar goed...
Zoals ik het deed:
code:
1
2
3
4
5
6
7
8
9
| <set name="set1" enabled="true">
<script name="script1" enabled="true">
<item left="10" top="11" width="50" heigh="12" />
<item left="85" top="11" width="50" heigh="12" />
</script>
<script name="script2" enabled="true">
<item left="60" top="11" width="50" heigh="12" />
</script>
</set> |
Met dan dit als code om het uit te lezen:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| public set openSet(XmlReader xmlReader)
{
set s = new set();
s.name = xmlReader.GetAttribute("name");
s.enabled = bool.Parse(xmlReader.GetAttribute("enabled");
xmlReader.Read();
while (xmlReader.NodeType != XmlNodeType.EndElement)
{
openScript(xmlReader); // spreekt verder wel voor zich; ongeveer net zo'n functie
}
return s;
} |
Zoals ik het wil doen:
code:
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
| <set>
<name>"set1"</name>
<enabled>"true"</enabled>
<script>
<name>"script1"</name>
<enabled>"true"</enabled>
<item>
<position>
<left>"10"</left>
<top>"11"</left>
<width>"50"</width>
<heigh>"12"</height>
</position>
</item>
<item>
<position>
<left>"85"</left>
<top>"11"</left>
<width>"50"</width>
<heigh>"12"</height>
</position>
</item>
</script>
<script>
<name>"script2"</name>
<enabled>"true"</enabled>
<item>
<position>
<left>"60"</left>
<top>"11"</left>
<width>"50"</width>
<heigh>"12"</height>
</position>
</item>
</script>
</set> |
Maar dan lijkt opnieuw inlezen me dus best moeilijk... Omdat je van een element direct z'n attributen op kan vragen. Maar als je van attributen subelementen maakt, moet je hierdoor heen itereren...
[
Voor 102% gewijzigd door
riezebosch op 02-06-2005 21:52
]
Canon EOS 400D + 18-55mm F3.5-5.6 + 50mm F1.8 II + 24-105 F4L + 430EX Speedlite + Crumpler Pretty Boy Back Pack