c# - LINQ 到 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</cover>
  </book>
</books>

如何获取字符串“MiniCover”?

我写了代码,但它不起作用——字符串是空的;

 string testLink = (@"Text.xml");

            XDocument xml = XDocument.Load(testLink);
            string cv = String.Empty;

            var c = from cover in xml.Elements("book")
                    where (string)cover.Attribute("size").Value == "mini"
                    select cover.Value;
            foreach (var item in c)
            {
                cv += item.ToString();
            }

            MessageBox.Show(cv);

谢谢!

最佳答案

Xpath 可以简化您的代码

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

获取内部文本

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

关于c# - LINQ 到 XML。如何获得一些字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12413670/

相关文章:

xml - xslt 2.0 处理器是否优化仅选择序列中的第一项?

c# - 如何将此sql语句转换为linq表达式

c# - 仅检索循环引用(或父)记录的 LINQ 语句?

c# - 正则表达式上的数学表达式

c# - 如何在 C# 中从数据读取器中转换为空 boolean 值?

c# - 循环 - 处理 2 个未知长度列表的控制流

c# - 将两个列表转换为一个不同的列表

c# - 时间过得像箭一样 WinForms 中的演示

java - Liquibase liquibase.exception.ValidationFailedException : Validation Failed:

xml - XPath:如何:使用当前上下文的给定属性名称选择所有子代和孙代(无论深度如何)?