代码之家  ›  专栏  ›  技术社区  ›  Jack Marchetti

转发器的itemdatabound内的xpath

  •  3
  • Jack Marchetti  · 技术社区  · 15 年前

    好的,我从FeedBurner引入一个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似乎包含正确的数据,但我不想手动解析。

    有人能告诉我我做错了什么吗?

    谢谢!

    1 回复  |  直到 15 年前
        1
  •  2
  •   Phaedrus    15 年前

    在你 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;
    }
    
    推荐文章