У меня проблемы с поиском элементов в файле XML с использованием LINQ to XML в C # 4.0.
Вот упрощенная XML-схема:
<?xml version="1.0" encoding="utf-8"?>
<mDoc xmlns="http://schemas.microsoft.com/taxonomy/2003/1">
<content>
<gdsPage xmlns="http://mysite.com/schemas/gdsPage/1/">
<textContainer id="C_134572">
<text id="T_399231">Content</text>
<text id="T_399232">Content</text>
</textContainer>
<textContainer id="C_134607" brands="PRMR " did="1" renderOption="" needceiling="0">
<text id="T_399268">Content</text>
</textContainer>
</gdsPage>
</content>
</mDoc>
Обратите внимание на два отдельных пространства имен, определенных в этом документе.
Я определяю их в своем коде следующим образом:
XNamespace ns_mdoc = "http://schemas.microsoft.com/taxonomy/2003/1";
XNamespace ns_gds = "http://mysite.com/schemas/gdsPage/1/";
Тогда из того, что я понимаю, я смогу предварительно добавить пространство имен к элементу, чтобы найти его, вот так:
var query =
from links in
xdoc.Element(ns_gds + "linkContainer").Elements("link")
where links.Attribute("id").Value == "C_134608" || links.Attribute("id").Value == "L_233140"
select links;
Это возвращает ноль. Я пробовал много других комбинаций аксессоров, таких как поиск Axis и потомки:
var stuff = from links in xdoc.Descendants(ns_gds + "linkContainer")
select new {
link = links.Element(ns_gds + "link").Value
};
Я также пытался использовать оба пространства имен, одно затем другое. Все еще Нул.
Что мне здесь не хватает?
Спасибо, что заглянули.