SyndicationItem を使用して記事を RSS に変換するサイトに取り組んでいます。私の問題は、作成者 (SyndicationPerson) が電子メール アドレスのみ (存在する場合) を表示することです。それ以外の場合は、次のように名前のみを表示します。
<author>name@email.com</author>
メールが見つからない場合:
<author>
<name>First Name Last Name</name>
</author>
両方を表示することになっています:
<author>
<name></name>
<email></email>
</author>
では、何がこれを制御しているのか、それとも何かが欠けているのでしょうか?
重要なコードの部分:
var syndicationItem = new SyndicationItem(GetItemTitle(article), GetItemSummary(article), new Uri(articleUrl), article.AbsoluteUrl, article.Date);
syndicationItem = AddAuthorsToFeedItem(syndicationItem, article);
syndicationItems.Add(syndicationItem);
feed.Items = syndicationItems;
var output = new StringBuilder();
using (var writer = XmlWriter.Create(output, new XmlWriterSettings {Indent = true}))
{
feed.SaveAsRss20(writer);
writer.Flush();
writer.Close();
return output.ToString();
}
private SyndicationItem AddAuthorsToFeedItem(SyndicationItem syndicationItem, Article article)
{
foreach (var author in article.Authors)
{
var authorName = author.First_Name + " " + author.Last_Name;
var person = new SyndicationPerson(author.Email_Address, authorName, string.Empty);
syndicationItem.Authors.Add(person);
}
return syndicationItem;
}