惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Troy Hunt's Blog
Blog — PlanetScale
Blog — PlanetScale
Engineering at Meta
Engineering at Meta
F
Full Disclosure
Recorded Future
Recorded Future
The GitHub Blog
The GitHub Blog
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
博客园_首页
博客园 - 叶小钗
MongoDB | Blog
MongoDB | Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Hacker News: Front Page
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
博客园 - 司徒正美
Webroot Blog
Webroot Blog
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security
Cloudbric
Cloudbric
PCI Perspectives
PCI Perspectives
有赞技术团队
有赞技术团队
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
TaoSecurity Blog
TaoSecurity Blog
L
Lohrmann on Cybersecurity
量子位
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tailwind CSS Blog
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog RSS Feed
Apple Machine Learning Research
Apple Machine Learning Research
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
N
News and Events Feed by Topic
罗磊的独立博客
T
Threat Research - Cisco Blogs
Schneier on Security
Schneier on Security
T
Tor Project blog
IT之家
IT之家
M
MIT News - Artificial intelligence
S
Security @ Cisco Blogs
O
OpenAI News
AI
AI
S
Securelist
Simon Willison's Weblog
Simon Willison's Weblog
The Last Watchdog
The Last Watchdog
月光博客
月光博客
Security Archives - TechRepublic
Security Archives - TechRepublic
L
LINUX DO - 热门话题

博客园 - 西门潇洒

MSSQL批量写入数据方案 关于SQL连接 加条件查询的LINQ表达式写法 关于LINQ中实现随机查询数据库中记录 .NET新特性--扩展方法 Array中数据强制数据类型转换 the Project type is not supported by installation 项目类型不能正确加载 ASP.NET三层架构中数据绑定的问题 小牛生产小牛的问题解决集粹 <转>自毁前程的七种行为 <转>在 ASP.NET 中执行 URL 重写 正则式中的实用命名组替换 去除socket编程当中接收到的多余符\0 - 西门潇洒 - 博客园 将一段符合XML格式规范字符串插入已有XML文档当中 <转>如何C#中实现在TreeView查找某一节点 javascript正则表达式中使用变量关键字 <转>JavaScript 参考教程之对象化编程 <转>JavaScript 参考教程之JavaScript 简介 <转>JavaScript 参考教程之事件处理 <转>JavaScript 参考教程资料之文档对象
ASP.NET 2.0中XML数据的处理
西门潇洒 · 2008-04-15 · via 博客园 - 西门潇洒

SqlDataSource和ObjectDataSource控件都是平面表格式的数据源控件,操作也相对简单,在这里我就不细说了.
在这里我主要谈下用于连接XML文件的XmlDataSource和用于连接站点导航数据的SiteMapDataSource这两个层次数据源控件中XmlDataSource数据绑定到平面表格控件的一起东东.

XmlDataSource控件允许其它控件绑定到XML数据。XmlDataSource支持DataFile属性,它被用于指定作为输入 (input)的XML数据文件的路径。你还可以指定TranformFile属性,给数据应用XSLT转换;设置XPath属性来指定需要暴露的数据源 节点的子集。

<asp:XmlDataSource ID="myXmlDataSource" runat="server" DataFile="~/temp.xml" TransformFile="~transXml" XPath="//User"></asp:XmlDataSource>

表格式数据绑定控件绑定到分层数据源也是可行的,但是它只能显示第一层数据。在下面的demo中,Repeater控件绑定到 temp.xml文件。由于数据源暴露的顶层节点是<User/>节点,Repeater可以在自己的ItemTemplate模板中使用Eval数据绑定语法绑定 到这些节点的属性。

<asp:Repeater runat="server" ID="myReater2" DataSourceID="myXmlDataSource">
    
<HeaderTemplate>标题</HeaderTemplate>
    
<ItemTemplate>
    
<ul>
        
<li>姓名:<%Eval("Name"%></li>
        
<li>Email:<%Eval("Email"%></li>
    
</ul>
    
</ItemTemplate>
    
<FooterTemplate></FooterTemplate>
    
</asp:Repeater>

除了Eval数据绑定语法之外,ASP.NET 2.0还提供了基于XPath的数据绑定语法,在实现了IXPathNavigable接口的任何数据项上都可以使用它。这里介绍两种常用的表达式类型:

◆XPath(expression, [formatString]) - 根据数据项计算Xpath表达式的值,返回单个值。
◆XPathSelect(expression, [formatString]) - 根据数据项计算Xpath表达式的值,返回节点列表。

下面我们来看看使用Xpath数据绑定方法的优势,通过一个demo来说明.

Repeater的ItemTemplate模板另外增加了一个Repeater,并把这个内部Repeater的属性绑定到一个描 述当前User节点的Reply子节点的XPathSelect表达式。在内部Repeater的ItemTemplate模板中,Xpath数据绑 定表达式根据这些"Reply"内容节点来计算值。ASP.NET 2.0利用这种技术,使你能够通过组合表格式数据绑定控件简便地构造出丰富的、分层的数据显示方式。

<asp:Repeater runat="server" ID="myRpeater"  DataSourceID="myXmlDataSource">
    
<HeaderTemplate><ul>标题</HeaderTemplate>
    
<ItemTemplate>
        
<li>ID:<%# XPath("@ID"%></li>
        
<li>姓名:<%#XPath("Name")%></li>
        
<li>Email:<%#XPath("Email")%></li>
        
<li>Content:<%#XPath("Content")%></li>
        
<li>
            
<asp:Repeater runat="server" ID="childRepeater" DataSource='<%# XPathSelect("Reply") %>'>
            
<HeaderTemplate><ul>留言</HeaderTemplate>
            
<ItemTemplate>
                
<ul>
                    
<li>ReplyID:<%#XPath("ID"%></li>
                    
<li>Time:<%# XPath("Time"%></li>
                    
<li>Content:<%# XPath("Content"%></li>
                
</ul>
            
</ItemTemplate>
            
<FooterTemplate></ul></FooterTemplate>
            
</asp:Repeater>
        
</li>
    
</ItemTemplate>
    
<FooterTemplate></ul></FooterTemplate>
    
</asp:Repeater>