【发布时间】:2023-03-17 12:12:01
【问题描述】:
我有以下 xml 数据。
<?xml version="1.0" encoding="utf-8" ?>
<mail>
<id>signUpConfirmation</id>
<subject>Activation</subject>
<body>
Hi, You account is activated \nRegards
</body>
</mail>
我需要根据我传递的 id 从 <body> 标签中读取值。
这是我尝试过的
var xml = File.ReadAllText("C:\\Users\\DELL\\Documents\\Visual Studio 2012\\Projects\\Website\\Website\\Files\\Mails.xml");
var str = XElement.Parse(xml);
var result = from mail in str.Elements("mail")
where (string)mail.Element("id") == "signUpConfirmation"
select (string)mail.Element("body");
log.Debug("mail data:" + result.First());
我得到错误:
序列不包含任何元素。
另外,我想在同一个查询中访问 id 标签的值。
【问题讨论】:
-
id和body不是属性。使用.Element。 -
进行了更改。仍然是同样的错误。问题已更新。
-
您可能应该使用XDocument.Load(),而不是解析字符串。
-
...如果您不明白为什么 LINQ 查询不会产生任何结果,请将其分解并检查它们。否则你可能会永远发现
Elements("mail")也不起作用。 -
为什么有人会否决这个问题。尽管被问了很多次,但我没有找到任何解决我的问题的方法。
标签: c# .net xml linq linq-to-xml