2009-11-28 6 views
2

Хорошо, поэтому я беру XML-канал из feedburner, используя XMLDataSource и ретранслятор.Xpath в ItemDataBound для ретранслятора

<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» пусто, и название включает в себя как название и дату [хотя оно может быть легко разбить, потому что дата всегда заканчивается: (двоеточие)

Так что мне нужно иметь возможность сделать это в коде позади.

Однако я не могу заставить это работать в коде позади.

Я пытался что-то вроде этого (теперь предоставлено, я в общей сложности Newb, когда речь идет о 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. –

Смежные вопросы