【问题标题】:XPath only works if I add an extra nodeXPath 仅在我添加额外节点时才有效
【发布时间】:2014-01-31 16:52:41
【问题描述】:

我对使用 XML 很陌生,对 XPath 也很陌生。 我正在尝试在我的 XML 文档中选择一个字段并将其显示在网页的标签中。听起来不错,很简单。

这是我网页上的代码:

<body>
    <form id="form1" runat="server">
    <div>
        <asp:ListView ID="NewsListView" runat="server" DataSourceID="NewsDataSource">
            <ItemTemplate>
                <asp:Label ID="Label1" runat="server" ><%#XPath("temp1")%></asp:Label>
            </ItemTemplate>
        </asp:ListView>

        <asp:XmlDataSource ID="NewsDataSource" runat="server" DataFile="~/news.xml"></asp:XmlDataSource>
    </div>
    </form>
</body>

当使用像下面这样的 XML 文档时,这可以 100% 正常工作。

<test>
  <response>
    <temp1>23.7</temp1> 
  </response>
 </test>

但是我试图访问的 XML 文档,我无法更改,如下所示:

  <response>
    <temp1>23.7</temp1> 
  </response>

基本上相同的文档,但顶部没有额外的节点。

有没有我可以让 XPath 在没有额外节点的情况下读取 temp1 的值?

谢谢。

【问题讨论】:

    标签: asp.net xml xpath


    【解决方案1】:

    我不熟悉 xpath 但正在查看文档.. 你可以添加

     <asp:Repeater 
            id="Repeater1" 
            runat="server" 
            DataSource='<%# XPathSelect("response") %>' >  
    

    【讨论】:

      【解决方案2】:

      找到了解决办法。将 XPath="/response" 添加到 XMLDataSource 就可以了。

      【讨论】:

        【解决方案3】:

        我以前从未尝试过这个 API,但它可以做这样的事情吗?

        <%#XPath("temp1/text()")%>
        

        这个 xpath 应该返回 temp1 元素的文本。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-12
          • 2016-05-22
          • 1970-01-01
          • 2018-07-22
          • 1970-01-01
          • 2017-09-10
          • 2019-11-15
          • 1970-01-01
          相关资源
          最近更新 更多