C# LINQ转换为XML。如何得到一些字符串?

C# LINQ转换为XML。如何得到一些字符串?,c#,xml,linq,linq-to-xml,C#,Xml,Linq,Linq To Xml,我有xml: <?xml version="1.0" encoding="utf-8" ?> <books> <book> <author>Ray</author> <album>Other</album> <cover size="large">LargeCover</cover> <cover size="mini">MiniCover&

我有xml:

<?xml version="1.0" encoding="utf-8" ?>
<books>
  <book>
    <author>Ray</author>
    <album>Other</album>
    <cover size="large">LargeCover</cover>
    <cover size="mini">MiniCover</cover>
  </book>
</books>
谢谢

使用
Elements()
时,必须更精确地指定结构

在代码中,
cover
是一个
元素。但是
size
的一个属性

这应该奏效:

    var c = from cover in xml.Elements("book")
                    .Elements("cover")
                where (string)cover.Attribute("size").Value == "mini"
                select cover.Value;
使用
Elements()
时,必须更精确地指定结构

在代码中,
cover
是一个
元素。但是
size
的一个属性

这应该奏效:

    var c = from cover in xml.Elements("book")
                    .Elements("cover")
                where (string)cover.Attribute("size").Value == "mini"
                select cover.Value;

Xpath可以简化代码

var covers = xDoc.XPathSelectElements("//cover[@size='mini']").ToList();    
获取内部文本

var covers = xDoc.XPathSelectElements("//cover[@size='mini']")
                .Select(x => x.Value)
                .ToList(); 

Xpath可以简化代码

var covers = xDoc.XPathSelectElements("//cover[@size='mini']").ToList();    
获取内部文本

var covers = xDoc.XPathSelectElements("//cover[@size='mini']")
                .Select(x => x.Value)
                .ToList(); 

对于严格要求,您可能需要添加
//book/cover…
以避免获得任何
MiniMag
对于严格要求,您可能需要添加
//book/cover…
以避免获得任何
MiniMag