Laden...

XML-Datei (Verschachtelungen) durchgehen

Erstellt von Fabian vor 17 Jahren Letzter Beitrag vor 17 Jahren 1.578 Views
Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 17 Jahren
XML-Datei (Verschachtelungen) durchgehen

Nabend zusammen,

ich bearbeite zurzeit eine XML-Datei und habe mich gerade gefragt, ob es irgendwie einfacher geht, die folgende XML-Datei abzuarbeiten:

<?xml version="1.0" encoding="utf-8" ?>
<fileSystem>
	<system name="ikaros">
		<action name="del">
			<file>
				<name>1</name>
			</file>
			<file>
				<name>2</name>
			</file>
			<dir>
				<name>3</name>
			</dir>
			<dir>
				<name>4</name>
			</dir>
		</action>
		<action name="rename">
			<file>
				<oldName>11</oldName>
				<newName>12</newName>
			</file>
			<file>
				<oldName>13</oldName>
				<newName>14</newName>
			</file>
			<dir>
				<oldName>15</oldName>
				<newName>16</newName>
			</dir>
			<dir>
				<oldName>17</oldName>
				<newName>18</newName>
			</dir>
		</action>
		<action name="copy">
			<file>
				<oldName>21</oldName>
				<newName>22</newName>
			</file>
			<file>
				<oldName>23</oldName>
				<newName>24</newName>
			</file>
			<dir>
				<oldName>25</oldName>
				<newName>26</newName>
			</dir>
			<dir>
				<oldName>27</oldName>
				<newName>28</newName>
			</dir>
		</action>	
	</system>

Zur Vereinfachung ist nur ein <system>-Element vorhanden. Davon kann es beliebig viele geben. Auch die <file>- bzw. <dir>-Elemente sind beliebig oft wiederholbar.

Im Moment gehe ich diese XML-Datei mit 3 foreach-Schleifen durch und bearbeite dann die untersten Elemente (unterhalb von <file> bzw. <dir>). Gibt es da evtl. eine bessere Möglichkeit oder ist das schon alles gut so, wie es ist 🙂.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

3.003 Beiträge seit 2006
vor 17 Jahren

Zum einfachen Durchgehen aller Knoten ist das schon der richtige Ansatz. Wenn du die Methode zum Parsen rekursiv ansetzt, musst du nicht noch für jede weitere Verschachtelung eine neue Schleife anlegen, sondern kannst beliebige XML-Datei durchforsten (super zum Lernen...).

Ansonsten kannst du dir ja auch einige Klassen des System.Xml.XPath-Namespace anschauen, da sind auch ein paar nette Helferlein dabei.

LaTino

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 17 Jahren

Hallo LaTino,

danke für die Antwort. Ich werde die Datei auch rekursiv durchgehen, da es in meinen Augen Sinn macht. Zumal ich auch nie sagen kann, wie viele Zweige es gibt.

Danke für die Antwort.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

3.003 Beiträge seit 2006
vor 17 Jahren

"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)

C
65 Beiträge seit 2006
vor 17 Jahren

Arbeite mit Elementen oder NodeLists, is bissl performanter als ständig im DOM zu arbeiten, ausserdem weisst du wo du bist/bekommst elemente besser:

nodelist machen und alle "file" elemente reinschreiben
foreach (xmlnode filenode in nodelist)
//todo

z.B.
Wenn sie Antworten haben, werden wir Ihnen gerne umfassende Fragen zukommen lassen!

Fabian Themenstarter:in
1.985 Beiträge seit 2004
vor 17 Jahren

Hallo zusammen,

@LaTino: Danke für den Link. Bin aber mittlerweile schon fertig und die rekursive Variante läuft ohne Probleme 🙂.

@Coreyl: Genau so habe ich es jetzt auch gemacht. Ich hole mir alle <system>-Elemente, davon die ChildNodes, gehe die durch und hole mir von jedem einzelnen Element wieder die ChildNodes und so weiter, bis ich ganz unten angelangt bin und weiß, was ich machen muss.

Klappt wunderbar.

Danke für die Infos und Tipps.

Gruß,
Fabian

"Eine wirklich gute Idee erkennt man daran, dass ihre Verwirklichung von vornherein ausgeschlossen erscheint." (Albert Einstein)

Gefangen im magischen Viereck zwischen studieren, schreiben, lehren und Ideen umsetzen…

Blog: www.fabiandeitelhoff.de

C
65 Beiträge seit 2006
vor 17 Jahren

Schön das wir helfen konnten, viel spass weiterhin mit xml + .net 😉