私はASP.NET(PHPプログラマーで8年)にかなり慣れていないので、用語が間違っている場合はご容赦ください。
現在、リピーターでリモートXMLファイルを取得してXMLDataSource
おり、DataFile
属性はコードビハインドで設定されています(DataFile
?cat = blahなどのURIパラメーターに基づいて動的に変更されます)。これは美しく機能し、問題はありません。
このリピーター内には、があり<asp:HyperLink>
、そのURLはコードビハインドでも動的に変更されます。
今質問に:
コードビハインドから、XMLノードが空であるかどうかを確認するにはどうすればよいですか、空でないノードの値を取得するにはどうすればよいですか?
私はこの問題に約3日間(数時間の検索)取り組んでいますが、それがとても単純なはずだと思われることを理解することはできません!これが私が現在持っているコードです、しかし私は持っObject reference not set to an instance of an object
ている行の後ろのコードのためにエラーを与えられますCreateNavigator();
うまくいけば、ASP.NETとC#に精通している誰かが問題を簡単に見つけられるか、私がこれを達成する方法を知っていますか?
コード
<asp:XmlDataSource ID="rssFeed" runat="server"></asp:XmlDataSource>
<asp:Repeater runat="server" DataSourceID="rssFeed" OnItemDataBound="Repeater_ItemDataBound">
<ItemTemplate>
<asp:HyperLink ID="articleURL" Text='<%#XPath("title")%>' runat="server" />
</ItemTemplate>
</asp:Repeater>
C#の背後にあるコード
protected void Page_Load(object sender, EventArgs e)
{
// rss variables
var rssSource = "http://websiteurl.com/xmlfeed/";
var rssPath = "rss/channel/item";
var searchQueries = "?foo=bar";
string currCat = Request.QueryString["cat"];
string searchTerms = Request.QueryString["s"];
// insert categories query
if(currCat != null){
searchQueries += "&cat=" + currCat;
}
// insert search query
if(searchTerms != null){
searchQueries += "&s=" + searchTerms;
}
// load RSS file
rssFeed.DataFile = rssSource + searchQueries;
rssFeed.XPath = rssPath;
}
protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
XPathNavigator nav = ((IXPathNavigable)e.Item.DataItem).CreateNavigator();
string hyperlinkURL = nav.SelectSingleNode("link").Value;
// removed code here that changes URL to hyperlinkURL to shorten post
}