Pregunta

Bien, entonces estoy extrayendo un feed XML de feedburner, usando un XMLDataSource y un 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>

Ahora el problema con el que me encuentro es, "pubdate" está vacío y el título incluye tanto el título como la fecha [aunque se puede dividir fácilmente porque la fecha siempre termina en: (dos puntos)

Así que necesito poder hacer esto en el código detrás.

Sin embargo, no puedo hacer que esto funcione en el código subyacente.

He intentado algo como esto (ahora concedido, soy un total nuevo cuando se trata de XML)

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

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

Así que probé esto, pero xePage siempre muestra "HasAttributes" como falso, y nunca encuentra el título. xePage.InnerXML parece contener los datos adecuados, pero no quiero intentar analizar las cosas manualmente.

¿Alguien puede señalarme una mejor dirección sobre lo que estoy haciendo mal?

¡Gracias!

¿Fue útil?

Solución

En su evento OnItemBound intente esto en su lugar.

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;
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top