J'essaie d'obtenir la valeur de "prénom" du code XML suivant: mais je reçois chaque fois une valeur vide (null) avec cette méthode: p> < Pré> xxx pré> où j'ai le problème? p> merci. p> p>
3 Réponses :
Voir Docs: https://docs.microsoft.com/en-us/dotnet/api/system.xml.linq.xcontainer.elements?view=netcore-3.1 P>
Je pense que vous pouvez vouloir xelement.elements code> ne renvoie que les éléments de niveau supérieur, pas tous les éléments imbriqués. P>
getDescendantNodes () code> https://docs.microsoft.com/en-us/dotnet/api/xem.xml.linq.xcontainer.DescendantNodes?View=netcore-3.1# System_xml_linq_xcontainer_descendantNodes P>
public List<string> GetFirstNames()
{
const string filename = @"C:\XML.xml";
string text = File.ReadAllText(filename);
XDocument doc = XDocument.Parse(text);
List<string> firstnameList =
doc.Root.Elements().Select(x => x.Element("firstName").Value).ToList();
return firstnameList;
}
Ce que je reçois, c'est un système.NullReferenceException avec cette méthode.
Cela fonctionne avec le fichier de test fourni. Vous pouvez ajouter le chèque NULL nécessaire à la sélection si tous les éléments "utilisateur" de votre fichier réel ne contiennent pas d'élément "Prénom".
Pouvez-vous me donner un échantillon pour cette suivante: list
Voir si cette construction aide (où 'Xel' est un xelement analysé à partir de votre fichier).
Max Susanne User 125 has a first name of Susanne
Le problème est que
doc.Element () code> ne renvoie que le niveau supérieur, c'est-à-dire "utilisateur". Vous souhaitez rechercher "Prénom" à N'importe quel niveau i>. Une alternative pourrait être d'essayerdoc.descendants ("FirstName") code>: Stackoverflow.com/questions/566167/...En tant que Conseil de débogage général: vous devez séparer votre instruction à une seule doublure dans plusieurs instructions, puis exécutez une boucle
foreach code> au lieu deSélectionnez code>. De cette façon, vous pouvez placer les points d'arrêt et voir quelles sont les valeurs à chaque étape. Une fois que vous avez compris ce que la structure est et où vous avez mal tourné, vous pouvez le redéfinir (ou non).