正しい構造のrssドキュメントにノードを追加する方法を理解しました。次に、pubDateの順序で並べ替えてから、画面に出力する必要があります。オンラインで例を見ると、XDocumentとLinqのものがたくさん見つかりましたが、XmlDocumentでは何も見つかりませんでした。私が持っているコードを廃棄して、ここからのアドバイスでXDocumentでそれを行う方法を考え出すか、XMLDocumentを続行してソートする方法を見つけるかどうか、頭を悩ませます。
XMLDocumentを使用すると、コードが希望どおりに機能するようになります。フィードが画面に出力されるときに、フィードをpubDateの順序で並べ替える必要があります。なので、とりあえずこれにこだわると思います。この記事http://support.microsoft.com/kb/555060と誰かがStackOverflowに投稿したxsltを見つけましたが、コードから「XmlHelperFunctions」を呼び出す方法がわかりません。XSLTは私が持っている最も簡単なオプションですか、それとももっと簡単なものがありますか?
これは私のコードです:
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(rssFeed.ToString());
XmlNodeList nl = xmlDoc.SelectNodes("/rss/channel/item");
foreach (XmlNode xn in nl)
{
string title = xn["title"].InnerText;
string link = xn["link"].InnerText;
string desc = xn["description"].InnerText;
string auth = xn["author"].InnerText;
string pdate = xn["pubDate"].InnerText;
XmlElement itemnode = xmlDoc.CreateElement("item");
itemnode.InnerXml = "<title></title><link></link><description></description><author></author><pubDate></pubDate>";
itemnode["title"].InnerText = title;
itemnode["link"].InnerText = link;
itemnode["description"].InnerText = desc;
itemnode["author"].InnerText = auth;
itemnode["pubDate"].InnerText = pdate;
xmlDoc.DocumentElement.SelectNodes("/rss/channel")[0].AppendChild(itemnode);
}
// Output to screen
xmlDoc.Save(Response.Output);
私のRSSフィード
<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
<channel>
<title>My RSS Feed</title>
<link>http://www.mylink.aspx</link>
<description>
</description>
<item>
<title>Top marks</title>
<link>http://www.mymarks.aspx</link>
<description>
<p>description field here</p>
</description>
<author>Viv</author>
<pubDate>Thu, 16 Aug 2012 12:10:54 GMT</pubDate>
</item>
<item>
<title>Costa Coffee</title>
<link>http://www.Costa.aspx</link>
<description>
<p>Costa Coffee have special offers.</p>
</description>
<author>Mike</author>
<pubDate>Thu, 23 Aug 2012 15:55:53 GMT</pubDate>
</item>
<item>
<title>Celebrate success</title>
<link>http://www.Celebrate.aspx</link>
<description>
<p>Lets all celebrate </p>
</description>
<author>Viv</author>
<pubDate>Thu, 22 Aug 2012 09:10:21 GMT</pubDate>
</item>
</channel>
</rss>