Ich versuche, mehr in LINQ-to-XML zu bekommen, also habe ich mir ein nettes kleines gemacht Beispiel XML-Dokument zum Ausprobieren. Außerdem habe ich versucht (und erfolgreich), ein eigenes XML-Schema für diese Datei zu erstellen, nur um die Dinge zu testen. Das XML-Dokument ist ziemlich einfach, und ziemlich sieht ähnlich wie folgt aus:Meine linq-Abfrage funktioniert nicht beim Hinzufügen des xmlns-Attributs zum root-Element in meinem XML-Dokument
<cars xmlns="/carsSchema.xsd">
<car age="5">
<carId>1</carId>
<brand>BMW</brand>
<model>320i</model>
<color paintType="metallic">Red</color>
</car>
<car age="2">
<carId>2</carId>
<brand>VW</brand>
<model>Golf</model>
<color paintType="matt">White</color>
</car>
[...]
</cars>
nun dieses Dokument Abfrage funktioniert gut, wenn ich die xmlns
-Attribut aus dem Wurzelelement entfernen. Wenn ich es wieder hinzufüge, gibt die Abfrage null und nichts zurück. Ich habe versucht, es selbst herauszufinden, aber ich muss noch eine Lösung finden, die mein Problem behebt.
Hier ist der C# -Bit:
XDocument xmlDoc = XDocument.Load(currentDir + "\\Cars.xml");
// XNamespace ns = "{" + currentDir + "\\carSchema.xsd}";
// Tried to query xmlDoc.Descendants(ns+"car") after reading another post,
// but that made no difference
var carInfo1 = from car in xmlDoc.Descendants("car")
select (string)car.Element("brand") + ": " + (string)car.Element("model");
Jeder sieht, was falsch ist? Und warum sollte LINQ wirklich das viel über den Namespace kümmern? Kann es nicht einfach meine Datei abfragen und kümmert mich nicht darum?
Vielen Dank im Voraus! :-)
Nun, das hat es behoben. Danke vielmals! Gibt es jedoch eine Möglichkeit, LINQ den Namespace zu ignorieren, außer es aus dem XML-Dokument zu entfernen? –
Ich glaube nicht, nein. Obwohl es ein bisschen nervig ist, denke ich, dass es wirklich Sinn macht. –