Je lutte désérialiser le XML suivant:alphabétisé LINQ to XML: Les meilleures pratiques pour désérialiser attribut/valeur à paires variable/valeur structurés
<?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>
espérant le faire dans la plus élégante et succincte en utilisant LINQ-to-XML, mais étant donné que je ne suis pas le plus intelligent de la ville en ce qui concerne les méthodes imbriquées, les types dédiés, les génériques, et cétera, j'ai pensé que ce serait une bonne idée de demander les gars aimeraient aller de l'avant et me montrer un peu d'alphabétisation LINQ :)
Maintenant pour chaque valeur que je fais quelque chose comme:
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");
Et Je ne sais je suis tout à fait manquer le point, non seulement parce que je me répète beaucoup là-bas, mais aussi parce que les requêtes travail seulement quand il n'y a qu'un seul élément donc, encore une fois si vous avez des commentaires ou suggestion, ce serait vraiment apprécié. Merci beaucoup d'avance!
MISE À JOUR: en cas que peut-être l'exemple précédent était pas vraiment utile, voici un plus genre de scénario réaliste:
<?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>
Par conséquent, pour chacun de ces articles que je voudrais générer des variables afin Je peux les passer en paramètres pour une méthode de gestion de FTP.
SOLVED:
Il est aussi facile que de faire une 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
);
}
tous premiers merci beaucoup pour votre commentaire Jon! J'ai vraiment besoin de les garder séparés; Imaginez que je persiste, disons, des détails de connexion ou des signets, etc., alors il faut séparer les éléments * lorem * et * ipsum *, puis créer des paires clé/valeur à partir de ses attributs. J'espère que vous avez suivi mon élaboration, de toute façon n'hésitez pas à me demander d'autres efforts explicatifs :) –
Je ne suis pas * vraiment * l'élaboration, non. Pourriez-vous éditer votre question pour donner un exemple plus complet de ce que vous essayez de faire et comment vous voulez utiliser l'information par la suite? –
Je l'ai fait. Merci beaucoup d'avance Jon. –