Heim >Backend-Entwicklung >C++ >Warum gibt meine LINQ to XML-Abfrage Null zurück, wenn XML-Namespaces verwendet werden?

Warum gibt meine LINQ to XML-Abfrage Null zurück, wenn XML-Namespaces verwendet werden?

Linda Hamilton
Linda HamiltonOriginal
2025-01-19 02:22:08936Durchsuche

Why Does My LINQ to XML Query Return Null When Using XML Namespaces?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn