Ich ringe darum, die folgende XML-Datei zu deserialisieren:
<?xml version="1.0" encoding="utf-8" ?>
<conf name="settings">
<item name="lorem"
one="the"
two="quick"
three="brown"
four="fox"
five="jumps"
six="over"
seven="the"
eight="lazy"
nine="dog"
/>
<item name="ipsum"
one="how"
two="many"
three="roads"
four="must"
five="a"
six="man"
seven="walk"
eight="down"
nine="?"
/>
</conf>
in der Hoffnung, dies auf die eleganteste und prägnanteste Art und Weise zu tun, indem ich LINQ-to-XML verwende, aber da ich nicht der klügste Junge in der Stadt bin, wenn es um verschachtelte Methoden, abgeleitete Typen, Generika usw. geht, dachte ich, es wäre eine gute Idee zu fragen, ob jemand von euch mir ein paar LINQ-Kenntnisse beibringen möchte :)
Im Moment mache ich für jeden Wert so etwas wie:
XDocument config = XDocument.Load("whatever.conf");
var one = from q in config.Descendants("item")
select (string)q.Attribute("one");
var two = from q in config.Descendants("item")
select (string)q.Attribute("two");
Und Ich weiß Ich bin völlig fehlt der Punkt, nicht nur, weil ich mich wiederholen, eine Menge gibt, sondern auch, weil diese Abfragen nur funktionieren, wenn es nur ein Element so, wieder, wenn Sie einen Kommentar oder einen Vorschlag haben, es wäre wirklich geschätzt werden. Vielen Dank im Voraus!
UPDATE: Für den Fall, dass das erste Beispiel nicht wirklich hilfreich war, hier ein eher realistisches Szenario:
<?xml version="1.0" encoding="utf-8" ?>
<conf name="ftp-settings" freq="daily" time="23:00">
<item name="isis"
host="10.10.1.250"
user="jdoe"
pass="4/cB0kdFGprXR/3oTs8mtw=="
file="backup.tar.gz"
path="/var/log"
/>
<item name="seth"
host="10.10.2.250"
user="jdoe"
pass="4/cB0kdFGprXR/3oTs8mtw=="
file="backup.tar.gz"
path="/var/log"
/>
</conf>
Daher möchte ich für jedes dieser Elemente Variablen generieren, damit ich sie als Parameter für eine FTP-Verwaltungsmethode übergeben kann.
GELÖST:
Es war so einfach wie eine foreach :
var elements = from element in xml.Descendants("item") select element;
foreach (XElement item in elements) {
ftp.DownloadFile(
item.Attribute("host").Value,
item.Attribute("user").Value,
item.Attribute("pass").Value,
item.Attribute("file").Value,
item.Attribute("path").Value
);
}