Xpath в ItemDataBound для Repeater

Итак, я извлекаю XML-канал из канала подачи, используя XMLDataSource и повторитель.

<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» как false и никогда не находит заголовок. xePage.InnerXML, кажется, содержит правильные данные, но я не хочу пытаться разбирать их вручную.

Может ли кто-нибудь указать мне в лучшем направлении, что я делаю неправильно?

Спасибо!


person Jack Marchetti    schedule 28.11.2009    source источник


Ответы (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;
}
person Phaedrus    schedule 29.11.2009
comment
Спасибо!! Не мог понять эту вещь для жизни меня. Мне нужно изучить XML. - person Jack Marchetti; 29.11.2009