2012-12-18 77 views
1

试图读取使用LINQ这个XML到XML如何从XML文件使用LINQ到XML读取数据?

<Root> 
    <shelves> 
     <bookNumber>12</bookNumber> 
     <coverType unit="H">soft</coverType> 
     <pages>100</pages> 
     <Weight units="lb">1.2</Weight> 
     <chapter sample="1">example 1</<chapter> 
     <chapter sample="2">example 2</<chapter> 
     <chapter sample="3">example 3</<chapter> 
     <chapter sample="4">example 4</<chapter> 
     <chapter sample="5">example 5</<chapter> 
     <chapter sample="6">example 6</<chapter> 
     <chapter sample="7">example 7</<chapter> 
     <chapter .................</chapter> 
     <chapter .................</chapter> 
     <chapter .................</chapter> 
     <chapter .................</chapter> 
     <chapter .................</chapter> 
     .............. 
    </shelves> 
</Root> 

那代码我与努力: - 。但是如何读取所有元素'章节'的值呢?

var book = from b in xml.Root.Elements("shelves") 
          select b; 
    foreach (var s in book) 
    { 
     booknumber = s.Element("bookNumber").Value, 
     covertype = s.Element("bookNumber").Value, 
     coverTypeUnit = s.Element("bookNumber").Attribute("unit").Value, 
     ........... 
     chapter = s.Element("bookNumber").Value ???? 
    } 
+0

你有没有尝试使用的章节内容只是另一种的foreach元素(“章节”)? –

回答

1
var values = s.Elements("chapter").Select(n => n.Value).ToArray(); 

此外,你从相同的元素(booknumber)一遍又一遍地阅读。你可能想检查你的代码。

编辑:也产生属性:

s.Elements("chapter"). 
Select(n => new {Topic = n.Attribute("topic").Value, Value = n.Value}). 
ToArray(); 
+0

谢谢。说'章节'的每个元素都有一个属性'主题'。如何在Array中获取属性? – user1327064

+0

您可以使用匿名类型。看到我的文章的例子。 – Mir

+0

但是不能使用..... ToArray()设置Array []属性? – user1327064