首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用asp:XmlDataSource和XPath解析XML-feed

如何使用asp:XmlDataSource和XPath解析XML-feed
EN

Stack Overflow用户
提问于 2009-08-04 15:36:11
回答 1查看 2.6K关注 0票数 0

我试图通过asp:XmlDataSource使用XML_feed列出asp:GridView中的空缺。这应该很简单,但是我的XPath表达式遗漏了一些东西。

这是我正在努力实现的一个简短的例子(职位空缺名单):

代码语言:javascript
复制
<asp:XmlDataSource ID="XMLsource" DataFile="http://demo.easycruit.com/export/xml/vacancy/list.xml" XPath="VacancyList/Vacancy" runat="server"/>
<asp:GridView DataSourceID="XMLsource" AutoGenerateColumns="False" runat="server">      
<Columns>
        <asp:TemplateField>
            <HeaderTemplate>Title</HeaderTemplate>
            <ItemTemplate><%# XPath( "Version/Title" ) %></ItemTemplate>                
    </asp:TemplateField>            
</Columns>
</asp:GridView>

这两个控制器的代码背后都有DataBind()。所以如果有人知道为什么这不管用..。:)

EN

回答 1

Stack Overflow用户

发布于 2009-08-04 15:59:13

如果您查看一下您的XML (仅前几行):

代码语言:javascript
复制
<VacancyList generated="2009-08-04T18:43:17" 
             xmlns="urn:EasyCruit" 
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xsi:schemaLocation="http://www.easycruit.com/dtd/vacancy-list.xsd">
  <Vacancy id="82034" date_start="2007-04-17" date_end="2009-12-22" 
           reference_number="CDP-GR3">
    <Versions>
      <Version language="fr">
        <Title>Chef de produit (H/F)</Title>
        <TitleHeading/>

将数据集绑定到<Vacancy>元素列表-到目前为止还不错。

但是在网格中,您可以引用:<%# XPath( "Version/Title" ) %>

这是行不通的,因为<Vacancy>中没有‘/’元素--这些元素在集合中……

因此,您需要在ItemTemplate中引用的内容是:

代码语言:javascript
复制
<%# XPath( "Versions/Version[@language='fr']/Title" ) %>

那应该管用。

更新:

由于XML2.0无法处理默认的ASP.NET名称空间,似乎还有一个额外的问题:-(

这是XML中的这一行:

代码语言:javascript
复制
<VacancyList ........
             xmlns="urn:EasyCruit" 

请参阅本文中有关主题:http://jasonf-blog.blogspot.com/2006/08/xmldatasource-xpath-workaround-for.html的博文

要解决这个问题,你可以做两件事:

  • 使用XSLT转换去掉默认的命名空间,以便XmlDataSource能够处理数据。
  • 在代码中加载来自URL的数据,并将其绑定到代码隐藏中的GridView。

XML 2:更新2:的命名空间剥离方法似乎运行得很好-- Bill提出了这种方法这里

如果在文章中将他的XSLT文件保存到网站项目中名为"StripNamespaces.xslt“的文件中,则如果将asp:XmlDataSource更改为:

代码语言:javascript
复制
<asp:XmlDataSource ID="XMLsource" runat="server"
            DataFile="http://demo.easycruit.com/export/xml/vacancy/list.xml" 
            TransformFile="~/StripNamespaces.xslt"
            XPath="VacancyList/Vacancy" />

注意新的"TransformFile“设置-这必须引用该XSLT文件。这样,我现在就可以在GridView中显示数据了。

Marc

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1228224

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档