XPath dentro ItemDataBound para Repeater
-
06-07-2019 - |
Pergunta
Ok, então eu estou puxando em um feed XML de FeedBurner, usando um XmlDataSource e um repetidor.
<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>
Agora, o problema que eu estou correndo em é, "pubdate" está vazio, eo título inclui tanto o título ea data [embora possa facilmente ser dividida porque a data sempre termina em um: (dois pontos)
Então eu preciso ser capaz de fazer isso no trás código.
No entanto, eu sou incapaz de chegar a este trabalho no trás código.
Eu tentei algo parecido com isso (agora concedido, eu sou um newb total quando se trata de XML)
IXPathNavigable x = (IXPathNavigable)e.Item.DataItem;
XPathNavigator nav = x.CreateNavigator();
XmlElement xePage = (XmlElement)nav.UnderlyingObject;
string title = xePage.GetAttribute("title");
Então, eu tentei isso, mas xePage mostra sempre "HasAttributes" como falsa, e nunca encontra o título. xePage.InnerXML parece conter os dados apropriados, mas eu não quero tentar as coisas de análise manualmente.
Alguém pode me apontar uma direção melhor sobre o que estou fazendo de errado?
Obrigado!
Solução
Em seu evento OnItemBound
tente isso em vez.
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;
}