如何使用名称中的命名空间查询XML?

时间:2012-11-07 13:14:07

标签: c# linq linq-to-xml

我正在使用这样的XML:

<ListOfLore>
      <q1:Lore xmlns:q1="http://www.rold.com/Data.xsd">                
        <q1:LoreNumber>15642</q1:LoreNumber>        
      </q1:Lore>
      <q1:Lore xmlns:q1="http://www.rold.com/Data.xsd">
        <q1:LoreNumber>15644</q1:LoreNumber>        
      </q1:Lore>
</ListOfLore>

我这样做,我什么都没得到

var lores = (from ListOfLore in pjs.Descendants("ListOfLore")
                              from Lore in ListOfLore.Descendants()
                              where Lore.Name.LocalName == ("Lore") 
                              select Lore);

我希望获取Lore

中的所有ListOfLore

1 个答案:

答案 0 :(得分:4)

XNamespace ns = "http://www.rold.com/Data.xsd";
var lores = (from lore in pjs.Descendants(ns + "Lore")
             select lore);

Jon指出,您不需要查询语法。以下内容更短更清晰:

XNamespace ns = "http://www.rold.com/Data.xsd";
var lores = pjs.Descendants(ns + "Lore");