C# 中的XML操作详解:读取,过滤以及数据绑定
来源:互联网 发布:北京网络派出所 编辑:程序博客网 时间:2024/05/21 06:03
在这个小教程,我将演示在Windows Phone 7如何让ListBox的数据绑定XML数据。我将使用LINQ to XML,以便加载和读取数据,而且我将展示如何实现一个基本的过滤。
首先让我们先创建一个Windows Phone 7的应用程序项目示例,并添加以下两个demo xml文件。
people.xml
<?xml version= " 1.0 " encoding= " utf-8 " ?>
<people>
<person>
<firstname>Kate</firstname>
<lastname>Smith</lastname>
<age> 27</age>
</person>
<person>
<firstname>Tom</firstname>
<lastname>Brown</lastname>
<age> 30</age>
</person>
<person>
<firstname>Tim</firstname>
<lastname>Stone</lastname>
<age> 36</age>
</person>
<person>
<firstname>Ann</firstname>
<lastname>Peterson</lastname>
<age> 27</age>
</person>
</people>
<people>
<person>
<firstname>Kate</firstname>
<lastname>Smith</lastname>
<age> 27</age>
</person>
<person>
<firstname>Tom</firstname>
<lastname>Brown</lastname>
<age> 30</age>
</person>
<person>
<firstname>Tim</firstname>
<lastname>Stone</lastname>
<age> 36</age>
</person>
<person>
<firstname>Ann</firstname>
<lastname>Peterson</lastname>
<age> 27</age>
</person>
</people>
在这里我不得不感谢一直支持我的卤面网版主,是他让我提起兴趣写了这么一篇文章,再次感谢卤面网,一个非常不错的wp7开发论坛,后面我也将再次向大家发布几篇高质量文章,请大家到卤面上找我吧,呵呵
进入正题:
PeopleCustom.xml
<?xml version= " 1.0 " ?>
<People>
<Person
FirstName= " Kate "
LastName= " Smith "
Age= " 27 " />
<Person
FirstName= " Tom "
LastName= " Brown "
Age= " 30 " />
<Person
FirstName= " Tim "
LastName= " Stone "
Age= " 36 " />
<Person
FirstName= " Ann "
LastName= " Peterson "
Age= " 27 " />
</People>
<People>
<Person
FirstName= " Kate "
LastName= " Smith "
Age= " 27 " />
<Person
FirstName= " Tom "
LastName= " Brown "
Age= " 30 " />
<Person
FirstName= " Tim "
LastName= " Stone "
Age= " 36 " />
<Person
FirstName= " Ann "
LastName= " Peterson "
Age= " 27 " />
</People>
下一步是创建一个示例类将被用来存储XML元素值:
public class Person
{
string firstname;
string lastname;
int age;
public string FirstName
{
get { return firstname; }
set { firstname = value; }
}
public string LastName
{
get { return lastname; }
set { lastname = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
}
{
string firstname;
string lastname;
int age;
public string FirstName
{
get { return firstname; }
set { firstname = value; }
}
public string LastName
{
get { return lastname; }
set { lastname = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
}
为了读取XML文件的信息,我们将使用的XDocument
所以你首先需要添加System.Xml.Linq.dll引用,然后using System.Xml.Linq;
XDocument loadedData = XDocument.Load( " People.xml ");
var data = from query in loadedData.Descendants( " person ")
select new Person
{
FirstName = ( string)query.Element( " firstname "),
LastName = ( string)query.Element( " lastname "),
Age = ( int)query.Element( " age ")
};
listBox.ItemsSource = data;
var data = from query in loadedData.Descendants( " person ")
select new Person
{
FirstName = ( string)query.Element( " firstname "),
LastName = ( string)query.Element( " lastname "),
Age = ( int)query.Element( " age ")
};
listBox.ItemsSource = data;
在接下来的例子中,我们将通过数据的“年龄”属性值过滤。源代码如下:
XDocument loadedCustomData = XDocument.Load( " PeopleCustom.xml ");
var filteredData = from c in loadedCustomData.Descendants( " Person ")
where c.Attribute( " Age ").Value == " 27 "
select new Person()
{
FirstName = c.Attribute( " FirstName ").Value,
LastName = c.Attribute( " LastName ").Value
};
listBox1.ItemsSource = filteredData;
var filteredData = from c in loadedCustomData.Descendants( " Person ")
where c.Attribute( " Age ").Value == " 27 "
select new Person()
{
FirstName = c.Attribute( " FirstName ").Value,
LastName = c.Attribute( " LastName ").Value
};
listBox1.ItemsSource = filteredData;
为了显示的数据,我们将使用以下ItemTemplates绑定ListBox控件:
<StackPanel x:Name= " ContentPanel " Grid.Row= " 1 " Margin= " 12,0,12,0 " Orientation= " Horizontal ">
<TextBlock Text= " XML Data: "/>
<ListBox x:Name= " listBox ">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin= " 10 " >
<TextBlock Text= " {Binding FirstName} "/>
<TextBlock Text= " {Binding LastName} "/>
<TextBlock Text= " {Binding Age} "/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text= " Filtered by Age 27: "/>
<ListBox x:Name= " listBox1 ">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin= " 20 " >
<TextBlock Text= " {Binding FirstName} "/>
<TextBlock Text= " {Binding LastName} "/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
<TextBlock Text= " XML Data: "/>
<ListBox x:Name= " listBox ">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin= " 10 " >
<TextBlock Text= " {Binding FirstName} "/>
<TextBlock Text= " {Binding LastName} "/>
<TextBlock Text= " {Binding Age} "/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock Text= " Filtered by Age 27: "/>
<ListBox x:Name= " listBox1 ">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Margin= " 20 " >
<TextBlock Text= " {Binding FirstName} "/>
<TextBlock Text= " {Binding LastName} "/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
</StackPanel>
我希望你能喜欢我的文章!如果你有更多想法,请到卤面网 wp7开发论坛(codewp7.com)问答区联系我,我会很高兴知道你在想什么。同时wp7交流QQ群172765887中,也能找到我的身影,感谢大家
源码请猛击
原文链接:http://www.cnblogs.com/sonyye/archive/2012/03/04/2379592.html
- C# 中的XML操作详解:读取,过滤以及数据绑定
- WP7 XML操作详解:读取,过滤以及数据绑定
- WP7的XML操作详解:读取,过滤以及数据绑定
- Windows Phone 7的XML操作详解:读取,过滤以及数据绑定
- c#读取txt,xml,excel中的数据,绑定到lsitview ,dataview
- C# 操作、读取XML
- C#读取XML数据
- C#中的数据绑定
- C# 读取XML中的数据信息内容的方法
- C#读取XML绑定页面元素
- C#读取操作Xml文件
- XML文件读取数据绑定到DropDownList
- 读取Xml文件进行绑定数据
- 读取Xml文件进行绑定数据
- 读取Xml文件进行绑定数据
- 读取Xml文件进行绑定数据
- c#操作XML数据
- c#操作XML数据
- 自己转C++的一些经验
- C# 绘制矢量图形
- 手机通讯录备份
- lnmp去掉nginx上传目录的PHP执行权限
- 测试程序中某个过程所用的时间(或算法效率),这样做可以吗?
- C# 中的XML操作详解:读取,过滤以及数据绑定
- jdbc连接Sqlite,MYsql 的编码修改
- smarty缓存1
- abstract class CBase{ public abstract void say_sth();
- 在没有jmf的电脑上安装使用jmf的程序
- smarty缓存2
- MySQL技巧:做好Limit优化
- reportviewer动态数据源
- Wince unicode 处理