簡體   English   中英

LINQ to XML。 如何獲得一些字符串?

[英]LINQ to XML. How to get some string?

我有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(); 

使用Elements()您必須更精確地指定結構。

在您的代碼中, cover是一個<book>元素。 但是size<cover>的屬性。

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

這應該工作:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM