为嵌套中继器指定XPath节点索引



假设我有一个类似于这样的XML层次结构:

<Animal>
    <Kingdom>
        <Phylum>
            <Class></Class>
            <Class></Class>
        </Phylum>
        <Phylum>
            <Class></Class>
            <Class></Class>
        </Phylum>
    </Kingdom>
    <Kingdom>
        <Phylum>
            <Class></Class>
            <Class></Class>
        </Phylum>
    </Kingdom>
</Animal>
(etc.)

同样,我有ASP。使用嵌套中继器的。NET代码,像这样:

<asp:Repeater ID="ShowKingdom" runat="server" DataSource="(SomeDataSource)">
    <ItemTemplate>
        <asp:TextBox ID="txtKingdom" runat="server" XPath="/*[local-name()='Animal']/*[local-name()='Kingdom'][{0}]">
        <asp:Repeater ID="ShowPhylum" runat="server" OnItemDataBound="(SomeDataBinder)">
            <ItemTemplate>
                <asp:TextBox ID="txtKingdom" runat="server" XPath="/*[local-name()='Animal']/*[local-name()='Kingdom'][{0}]/*[local-name()='Phylum'][???]">
            </ItemTemplate>
        </asp:Repeater>
    </ItemTemplate>
</asp:Repeater>

我的问题:我如何指定节点索引选择器"[??用于嵌套的重复器中的XPath ?!?

注意:我的语言是ASP.NET中的VB。

编辑:我尝试使用不同的索引"[{1}]"(给我一个索引越界错误),一个相对的Xpath"[local-name()='Phylum']"(没有"/*"在它之前-不识别节点/路径),并修补嵌套的中继器数据源(它要么不识别Xpath或崩溃)。

显然,我还没能让这些工作。我需要考虑另一种方法吗?

编辑#2:我尝试过的另一件事是不想工作:对于嵌套的重复器:

DataSource="<%# XPathSelect('Phylum')%>"

我终于想通了。我在这里找到了钥匙。

在做了大量的研究之后,我意识到XPath中的{0}谓词索引在后台代码中被调用String.format替换了。

我通过引用e.p item . parent . parent(其中"e"是一个RepeaterItemEventArgs对象)获得了父中继器索引。

一旦我有了当前中继器及其父节点的索引,我就可以使用{0}和{1}作为我的索引和String。格式完成了其余部分。

瞧。问题解决了

相关内容

  • 没有找到相关文章

最新更新