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