LinqToXml学习实例

       终于静下心来学习LinqToXml,虽然说不复杂,但对我这种菜鸟来说,还是遇到一些问题,经过不懈努力的baidu,google之后,学习了很多人的经验教训,也摘录了很多人的代码,终于有点眉目。在此把做好的一个实例分享出来。

//查询绑定

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 private void BindPerson()
        {
            
// 加载指定的xml文件
            XDocument xml = XDocument.Load("http://www.cnblogs.com/Sample1.xml");

            
// 使用查询语法获取Person集合
            var persons = from p in xml.Root.Elements("person")

                          select 
new
                          {
                              Name 
= p.Element("name").Value,
                              Age 
= int.Parse(p.Element("age").Value),
                              Salary 
= p.Element("salary").Value
                          };
            
if (!string.IsNullOrEmpty(this.txtName.Text))
                persons 
= from e in persons
                          
where e.Name.Contains(this.txtName.Text)
                          select e;
            
if (!string.IsNullOrEmpty(this.txtAge.Text))
            {

                persons 
= from e in persons
                          
where (int)e.Age >= int.Parse(this.txtAge.Text.Trim())
                          select e;
            }
            
this.dataGridView1.DataSource = persons.ToList(); 

        }

//新增

 

ContractedBlock.gif ExpandedBlockStart.gif Code

        
private void cmdAdd_Click(object sender, EventArgs e)
        {
            
try
            {
                
int age = 0;
                
if (!string.IsNullOrEmpty(this.txtAge.Text))
                    age 
= int.Parse(this.txtAge.Text.Trim());
                
// 加载指定的xml文件
                XDocument xml = XDocument.Load("http://www.cnblogs.com/Sample1.xml");

                
// 创建需要新增的XElement对象
                XElement person = new XElement(
                    
"person",
                    
new XElement("name", txtName.Text),
                    
new XElement("age", age),
                    
new XElement("salary", txtSalary.Text));

                
// 添加需要新增的XElement对象
                xml.Root.Add(person);

                
// 保存xml
                xml.Save("http://www.cnblogs.com/Sample1.xml");

                BindPerson();
              
            }
            
catch
            {
                MessageBox.Show(
"新增失败!");

            }
        }

//修改

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 private void cmdModify_Click(object sender, EventArgs e)
        {
            
try
            {
                
// 加载指定的xml文件
                XDocument xml = XDocument.Load("http://www.cnblogs.com/Sample1.xml");

                
// 使用查询语法获取指定的Person集合
                var persons = from p in xml.Root.Elements("person")
                              
where p.Element("name").Value == this.txtName.Text
                              select p;

                
// 更新指定的XElement对象
                foreach (XElement xe in persons)
                {
                    xe.SetElementValue(
"age"this.txtAge.Text);
                    xe.SetElementValue(
"salary"this.txtSalary.Text);
                }

                
// 保存xml
                xml.Save("http://www.cnblogs.com/Sample1.xml");

                BindPerson();
               
            }
            
catch
            {

                MessageBox.Show(
"修改失败!");
            }
        }

//删除

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 private void cmdDelete_Click(object sender, EventArgs e)
        {
            
try
            {
                
// 加载指定的xml文件
                XDocument xml = XDocument.Load("http://www.cnblogs.com/Sample1.xml");

                
// 使用查询语法获取指定的Person集合
                var persons = from p in xml.Root.Elements("person")
                              
where p.Element("name").Value == this.txtName.Text
                              select p;

                
// 删除指定的XElement对象
                persons.Remove();

                
// 保存xml
                xml.Save("http://www.cnblogs.com/Sample1.xml");

                BindPerson();
               
            }
            
catch
            {
                MessageBox.Show(
"删除失败");
            }
        }

 

//xml文件:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
<?xml version="1.0" encoding="utf-8"?>
<root>
  
<person>
    
<name>test</name>
    
<age>23</age>
    
<salary>1111</salary>
  
</person>
  
<person>
    
<name>小王</name>
    
<age>30</age>
    
<salary>6000</salary>
  
</person>
</root>

 

源代码下载地址:/Files/gjahead/LinqToXml.rar

转载于:https://www.cnblogs.com/gjahead/archive/2009/05/04/1448703.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值