Heim >Backend-Entwicklung >C++ >Warum gibt meine LINQ to XML-Abfrage Null zurück, wenn XML-Namespaces verwendet werden?
Lösen Sie das Problem des XML-Namespace in LINQ to XML, der zu leeren Abfrageergebnissen führt
In diesem Artikel wird das Problem erläutert, dass Abfrageergebnisse Null zurückgeben, wenn LINQ to XML zum Verarbeiten von XML-Daten verwendet wird, die XML-Namespaces enthalten. Der Code dient zum Extrahieren von Daten aus XML, die Abfrage schlägt jedoch aufgrund der unsachgemäßen Verwendung von Namespaces fehl.
Die Descendants
- und Element
-Methoden von LINQ to XML erhalten XName
-Parameter. Die direkte Verwendung von Zeichenfolgen anstelle von XName
-Objekten kann zwar automatisch konvertiert werden, ist jedoch fehleranfällig. Um dieses Problem zu lösen, müssen Sie den Namespace mithilfe einer XNamespace
-Instanz explizit angeben, bevor Sie die Zeichenfolgendarstellung des Elementnamens verwenden:
<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>
Bitte beachten Sie, dass Descendants
in der Methode ns
und Element
in der Methode nsa
verwendet wird. Durch die explizite Definition des Namespace können Sie sicherstellen, dass das Zielelement korrekt ist, und so das Problem lösen, dass Descendants
null zurückgibt.
Das obige ist der detaillierte Inhalt vonWarum gibt meine LINQ to XML-Abfrage Null zurück, wenn XML-Namespaces verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!