0
我遇到了在C#4.0中使用LINQ to XML在Xml文件中查找元素的麻烦。查找具有多个名称空间的元素
这里是简化的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;
这将返回null。我试图像轴搜索和后代存取的许多其他组合:
var stuff = from links in xdoc.Descendants(ns_gds + "linkContainer")
select new {
link = links.Element(ns_gds + "link").Value
};
我也用这两个名字空间,一个那么其他的尝试。仍然是空的。
我在这里错过了什么?
感谢您的关注。
真棒,这真是棒极了。谢谢! – nocarrier 2011-04-04 02:15:52