2009-11-28 84 views
2

好吧,我使用XMLDataSource和中繼器從feedburner中提取XML feed。Repeater中的ItemDataBound中的Xpath

<asp:Repeater ID="rptrEvents" OnItemDataBound="rptrEvents_ItemDataBound" DataSourceID="XmlDataSource1" runat="server"> 
    <ItemTemplate> 
      <li runat="server" id="liLineItem"> 
       <a href="<%#XPath("link")%>"> 
        <span><%#XPath("pubdate")%></span> 
        <%#XPath("title")%> 
       </a> 
      </li> 
    </ItemTemplate> 
</asp:Repeater> 

現在我遇到的問題是,「pubdate的」是空的,標題包含標題和日期[雖然它可以很容易地被分割,因爲日期總是以結尾:(冒號)

所以我需要能夠在後面的代碼中做到這一點。

但是,我無法讓它在代碼背後工作。

我已經試過這樣的事情(現在是理所當然的,我是一個總福利局當涉及到XML)

IXPathNavigable x = (IXPathNavigable)e.Item.DataItem; 
XPathNavigator nav = x.CreateNavigator(); 

XmlElement xePage = (XmlElement)nav.UnderlyingObject; 
string title = xePage.GetAttribute("title"); 

所以,我想這一點,但xePage總是顯示「HasAttributes」爲假,並從來沒有找到標題。 xePage.InnerXML似乎包含正確的數據,但我不想嘗試手動解析出來。

任何人都可以指出我在做什麼錯了嗎?

謝謝!

回答

1

在您的OnItemBound事件中試試這個。

protected void Repeater_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    IXPathNavigable x = (IXPathNavigable)e.Item.DataItem; 
    XPathNavigator nav = x.CreateNavigator(); 
    XmlElement xePage = (XmlElement)nav.UnderlyingObject; 
    string title = xePage.SelectSingleNode("title").InnerText; 
} 
+0

謝謝!我無法想象這件事。我需要閱讀XML。 – 2009-11-29 10:06:26