LINQ to XML 通过其属性检索元素值
使用 LINQ to XML 通过其属性检索元素值。
引言
本文介绍了如何根据属性值检索元素的值。
场景
我有一个网站,需要读取一些静态数据,但希望随时能够更新它,所以我决定从 XML 文件中读取数据并使用 LINQ to XML。经过一段时间的摸索和在各处搜索,我对这个想法有了更好的理解,所以决定与大家分享。
Using the Code
我们将创建一个 XML 文件和一个类来从中获取数据
- XML 文件 "Actions.xml"
- 类 "Actions.cs"
- 调用该方法的网页后台代码如下所示
<?xml version="1.0" encoding="utf-8" ?>
<Actions>
<Action id="SignIn">1</Action>
<Action id="SignOut">2</Action>
<Action id="Open">3</Action>
</Actions>
我们将使类的构造函数成为将数据获取到类中变量的函数。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Xml.Linq;
public class Actions
{
int signIn, signOut, open;
public int SignIn
{
get { return signIn; }
}
public Actions()
{
XElement xe = XElement.Load(@"C:\Users\ADELOooO\Documents\
Visual Studio 10\WebSites\LinQReadXML\Actions.xml");
var x = from a in xe.Elements("Action")
Where a.Attribute("id").Value == "SignIn"
select a.Value;
signIn = int.Parse(x.First().ToString());
}
}
我们上面使用了 signin
变量作为示例,但您可以将其用于所有变量。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
Actions a = new Actions();
TextBox1.Text = a.SignIn.ToString();
}
}
关注点
我使用 VSTS 10 beta 创建了这个项目。希望对您有所帮助。