我试图通过asp:XmlDataSource使用XML_feed列出asp:GridView中的空缺。这应该很简单,但是我的XPath表达式遗漏了一些东西。
这是我正在努力实现的一个简短的例子(职位空缺名单):
<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()。所以如果有人知道为什么这不管用..。:)
发布于 2009-08-04 15:59:13
如果您查看一下您的XML (仅前几行):
<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中引用的内容是:
<%# XPath( "Versions/Version[@language='fr']/Title" ) %>那应该管用。
更新:
由于XML2.0无法处理默认的ASP.NET名称空间,似乎还有一个额外的问题:-(
这是XML中的这一行:
<VacancyList ........
xmlns="urn:EasyCruit" 请参阅本文中有关主题:http://jasonf-blog.blogspot.com/2006/08/xmldatasource-xpath-workaround-for.html的博文
要解决这个问题,你可以做两件事:
XML 2:更新2:的命名空间剥离方法似乎运行得很好-- Bill提出了这种方法这里。
如果在文章中将他的XSLT文件保存到网站项目中名为"StripNamespaces.xslt“的文件中,则如果将asp:XmlDataSource更改为:
<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
https://stackoverflow.com/questions/1228224
复制相似问题