如何在 C# 中的 Xelement 中使用 foreach 循环
How to use foreach loop inside a Xelement in c#
XElement doc = null;
doc = new XElement("root");
foreach (var content in emailContents)
{
doc.Add(new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body)));
// I want to add the below code after the body element is created in the xml inside the email element section; How to do the same?
foreach (var attachment in content.attachments)
{
doc.Add(new XElement("attachmentname"), attachment.Filename),
doc.Add(new XElement(("attachmentpath"), attachment.Filepath)
}
}
基本上 content.attachment 是一个附件名称列表,我想在正文元素之后添加该列表。如何做同样的事情?
您正在将附件添加到根元素,而不是添加到电子邮件元素中。你可以像下面那样做。
XElement doc = null;
doc = new XElement("root");
doc.Add(new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body)));
var email=doc.Element("Email"); // get email element from root Element
foreach (var attachment in content.attachments)
{
//Add attachemnt information to email element.
email.Add(new XElement("attachmentname"), attachment.Filename),
email.Add(new XElement(("attachmentpath"), attachment.Filepath)
}
一次搞定相当容易:
var doc =
new XElement("root",
new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body),
content.attachments.Select(attachment =>
new XElement("attachment",
new XElement("attachmentname", attachment.Filename),
new XElement("attachmentpath", attachment.Filepath)))));
我从这个示例数据开始:
var content = new
{
FromAddress = "FromAddress",
receivedOnemail = "receivedOnemail",
subject = "subject",
body = "body",
attachments = new []
{
new
{
Filename = "Filename",
Filepath = "Filepath",
},
},
};
我得到了这个 XML:
<root>
<Email>
<FromAddress>FromAddress</FromAddress>
<EmailReceivedOn>receivedOnemail</EmailReceivedOn>
<Subject>subject</Subject>
<Body>body</Body>
<attachment>
<attachmentname>Filename</attachmentname>
<attachmentpath>Filepath</attachmentpath>
</attachment>
</Email>
</root>
XElement doc = null;
doc = new XElement("root");
foreach (var content in emailContents)
{
doc.Add(new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body)));
// I want to add the below code after the body element is created in the xml inside the email element section; How to do the same?
foreach (var attachment in content.attachments)
{
doc.Add(new XElement("attachmentname"), attachment.Filename),
doc.Add(new XElement(("attachmentpath"), attachment.Filepath)
}
}
基本上 content.attachment 是一个附件名称列表,我想在正文元素之后添加该列表。如何做同样的事情?
您正在将附件添加到根元素,而不是添加到电子邮件元素中。你可以像下面那样做。
XElement doc = null;
doc = new XElement("root");
doc.Add(new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body)));
var email=doc.Element("Email"); // get email element from root Element
foreach (var attachment in content.attachments)
{
//Add attachemnt information to email element.
email.Add(new XElement("attachmentname"), attachment.Filename),
email.Add(new XElement(("attachmentpath"), attachment.Filepath)
}
一次搞定相当容易:
var doc =
new XElement("root",
new XElement("Email",
new XElement("FromAddress", content.FromAddress),
new XElement("EmailReceivedOn", content.receivedOnemail),
new XElement("Subject", content.subject),
new XElement("Body", content.body),
content.attachments.Select(attachment =>
new XElement("attachment",
new XElement("attachmentname", attachment.Filename),
new XElement("attachmentpath", attachment.Filepath)))));
我从这个示例数据开始:
var content = new
{
FromAddress = "FromAddress",
receivedOnemail = "receivedOnemail",
subject = "subject",
body = "body",
attachments = new []
{
new
{
Filename = "Filename",
Filepath = "Filepath",
},
},
};
我得到了这个 XML:
<root>
<Email>
<FromAddress>FromAddress</FromAddress>
<EmailReceivedOn>receivedOnemail</EmailReceivedOn>
<Subject>subject</Subject>
<Body>body</Body>
<attachment>
<attachmentname>Filename</attachmentname>
<attachmentpath>Filepath</attachmentpath>
</attachment>
</Email>
</root>