我正在寻找创建一个程序来为iTunes Podcast编写rss文件。我知道你可以买一个,但这是为了经验和非营利组织。这是我的C#代码
XDocument doc = XDocument.Load(fileLocation);
XNamespace itunes = "http://www.itunes.com/dtds/podcast-1.0.dtd";
XElement root = new XElement("item",
(new XElement("title", textBoxPodcastTitle.Text)),
(new XElement(itunes + "author", textBoxAuthor.Text)),
(new XElement(itunes + "subtitle", textBoxSubtitle.Text)),
(new XElement(itunes + "summary", textBoxSummary.Text)),
(new XElement("enclosuer",
new XAttribute("url", "\"http://www.jubileespanish.org/Podcast/\"" + textBoxFileName.Text + "\"" + " length=\"" + o_currentMp3File.Length.ToString() + "\" type=\"audio/mpeg\""))),
(new XElement("guid", "http://www.jubileespanish.org/Podcast/" + textBoxFileName.Text)),
(new XElement("pubDate", o_selectedMP3.currentDate())),
(new XElement(itunes + "duration", o_selectedMP3.MP3Duration(openFileDialogFileName.FileName.ToString()))),
(new XElement("keywords", textBoxKeywords.Text)));
doc.Element("channel").Add(root);
doc.Save(fileLocation);
一切正常,除非我正在编写我创建的根XElement。它无法写入,因为在iTunes频道元素中除了“item”元素之外还有其他元素。(播客信息的其余部分)。如何将其附加到channel元素中,但是在结束标记之前。以下是xml文件的外观。谢谢,我是新的温柔......
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<title>Non Profit company</title>
<itunes:keywords>keywords</itunes:keywords>
<itunes:image href="http://www.podcast.org/Podcast/podcastlogo.png" />
<itunes:explicit>no</itunes:explicit>
<itunes:block>no</itunes:block>
<item>
<title>Red, Whine, & Blue</title>
<itunes:author>Various</itunes:author>
<itunes:subtitle>Red + Blue != Purple</itunes:subtitle>
<itunes:summary>This week we talk about surviving in a Red state if you are a Blue person. Or vice versa.</itunes:summary>
<itunes:image href="http://example.com/podcasts/everything/AllAboutEverything/Episode3.jpg" />
<enclosure url="http://example.com/podcasts/everything/AllAboutEverythingEpisode1.mp3" length="4989537" type="audio/mpeg" />
<guid>http://example.com/podcasts/archive/aae20050601.mp3</guid>
<pubDate>Wed, 1 Jun 2005 19:00:00 GMT</pubDate>
<itunes:duration>3:59</itunes:duration>
<itunes:keywords>politics, red, blue, state</itunes:keywords>
</item>
</channel>
</rss>
我想在
之前追加感谢。
答案 0 :(得分:1)
这应该有效:
doc.Root.Element("channel").Add(root);
通过访问Root
属性检索的元素为rss
,Add
方法默认情况下会将元素添加到元素内容的末尾。
其他可能的方法是:
doc.Element("rss").Element("channel").Add(root);
或:
var el = doc.Descendants("channel").FirstOrDefault();
if (el != null)
el.Add(root);
但第一个(使用Root
属性)将是最干净的。