Xpath в ItemDataBound для повторителя
-
06-07-2019 - |
Вопрос
Хорошо, я извлекаю XML-канал из Feedburner, используя 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» как ложное и никогда не находит заголовок.Кажется, что xePage.InnerXML содержит правильные данные, но я не хочу пытаться анализировать их вручную.
Может ли кто-нибудь указать мне лучшее направление, что я делаю неправильно?
Спасибо!
Решение
В вашей 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;
}