permet de supposer un fichier xml nommé data.xml avec le contenu suivant:C# LINQ to requête xml aide
<root>
<record>
<id>1</id>
<name>test 1</name>
<resume>this is the resume</resume>
<specs>these are the specs</specs>
</record>
<record>
<id>2</id>
<name>test 2</name>
<resume>this is the resume 2</resume>
</record>
<record>
<id>3</id>
<name>test 3</name>
<specs>these are the specs 3</specs>
</record>
</root>
J'ai besoin de chercher tous les dossiers où l'un de ces champs (id, nom, curriculum vitae ou spécifications) contient une valeur donnée. J'ai créé ce code
XDocument DOC = XDocument.Load("data.xml");
IEnumerable<ProductRecord> results = from obj in DOC.Descendants("record")
where
obj.Element("id").Value.Contains(valueToSearch) ||
obj.Element("name").Value.Contains(valueToSearch) ||
obj.Element("resume").Value.Contains(valueToSearch) ||
obj.Element("specs").Value.Contains(valueToSearch)
select new ProductRecord {
ID = obj.Element("id").Value,
Name = obj.Element("name").Value,
Resume = obj.Element("resume").Value,
Specs = obj.Element("specs").Value
};
Ce code génère une erreur de NullReference car tous les enregistrements ne possèdent pas tous les champs. Comment puis-je tester si l'enregistrement en cours a un élément donné avant de définir une condition à appliquer? Ex. L'enregistrement [@ ID = 3] n'a pas de résumé.
Merci à l'avance
Merci beaucoup! – adaoss