Maison >développement back-end >C++ >Pourquoi ma requête LINQ to XML renvoie-t-elle null lors de l'utilisation d'espaces de noms XML ?
Résoudre le problème de l'espace de noms XML dans LINQ to XML provoquant des résultats de requête vides
Cet article aborde le problème des résultats de requête renvoyant null lors de l'utilisation de LINQ to XML pour traiter des données XML contenant des espaces de noms XML. Le code est conçu pour extraire des données de XML, mais la requête échoue en raison d'une utilisation inappropriée des espaces de noms.
Les méthodes Descendants
et Element
de LINQ to XML reçoivent des paramètres XName
. Bien que l'utilisation de chaînes directement au lieu d'objets XName
puisse les convertir automatiquement, elle est sujette aux erreurs. Pour résoudre ce problème, vous devez spécifier explicitement l'espace de noms à l'aide d'une instance XNamespace
avant d'utiliser la représentation sous forme de chaîne du nom de l'élément :
<code class="language-csharp">XNamespace ns = "http://myvalue.com"; XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace"; var elements = from data in xmlElements.Descendants(ns + "Result") select new { TheBool = (bool)data.Element(nsa + "TheBool"), TheId = (int)data.Element(nsa + "TheId"), };</code>
Veuillez noter que Descendants
est utilisé dans la méthode ns
et Element
est utilisé dans la méthode nsa
. En définissant explicitement l'espace de noms, vous pouvez vous assurer que l'élément cible est correct, résolvant ainsi le problème du retour de Descendants
null.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!