[英]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.