我有以下xml数据。
<?xml version="1.0" encoding="utf-8" ?>
<mail>
<id>signUpConfirmation</id>
<subject>Activation</subject>
<body>
Hi, You account is activated \nRegards
</body>
</mail>
我需要从<body>
标签中读取值,具体取决于我传递的ID。
这就是我试过的
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标记的值。
答案 0 :(得分:4)
你有几个问题:
id
和body
不是属性,而是元素,因此您需要使用.Elements
XElement
来解析xml。它将从第一个元素mail
开始,然后您正在查找名称为mail
的子元素 - 它不存在。使用XDocument
。代码:
var result = (from mail in XDocument.Load("data.xml").Descendants("mail")
where mail.Element("id").Value == "signUpConfirmation"
select new {
Body = mail.Element("body").Value,
Subject = mail.Element("subject").Value
}).ToList();
答案 1 :(得分:1)
var arrOfArrays = [["a","b"],["C","D"]];
var flattened = arrOfArrays.reduce(function(p,c){
return p.concat(c);
});
console.log(flattened);
这是有效的代码。
的XDocument
而不是
的XElement
结束.Element为@DKR说。