Я пытаюсь получить больше информации о LINQ-to-XML, поэтому я сделал себе небольшой пример XML-документа, чтобы опробовать его. Кроме того, я попытался (и успешно) создал собственную XML-схему для этого файла, просто чтобы проверить это. XML-документ довольно прост и выглядит примерно так:
<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>
Теперь запрос этого документа работает нормально, если я удаляю атрибут xmlns
из корневого элемента. Когда я добавляю его обратно, запрос возвращает ноль и ничего. Я пытался выяснить это самостоятельно, но мне еще не удалось найти решение, которое решило бы мою проблему.
Вот C # -бит:
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");
Кто-нибудь видит, что не так? И почему LINQ действительно должно заботиться , что так много о пространстве имен? Разве он не может просто запросить мой файл и не заботиться об этом?
Заранее спасибо! : -)