using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.IO;
using System.Xml; namespace test
{
public partial class xmlDemo : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ } //使用XmlDocument创建xml文件
protected void Button1_Click(object sender, EventArgs e)
{
string dirPath = Server.MapPath("/xml"); DirectoryInfo dir = new DirectoryInfo(dirPath); if (!dir.Exists)
{
dir.Create();
} //创建xml文件
XmlDocument xdoc = new XmlDocument(); //创建xml描述
XmlDeclaration xdec = xdoc.CreateXmlDeclaration("1.0", "utf-8", null);
xdoc.AppendChild(xdec); //创建xml跟节点 XmlElement xroot = xdoc.CreateElement("persons");
xdoc.AppendChild(xroot); //创建节点 XmlElement xper = xdoc.CreateElement("person");
xroot.AppendChild(xper); //对person节点设置属性
xper.SetAttribute("id", ""); //创建person节点下的子节点 //person节点下创建name节点
XmlElement xname = xdoc.CreateElement("name");
xper.AppendChild(xname); XmlText textName = xdoc.CreateTextNode("test");
xname.AppendChild(textName); //person节点下创建age节点
XmlElement xage = xdoc.CreateElement("age");
xper.AppendChild(xage); XmlText textAge = xdoc.CreateTextNode("");
xage.AppendChild(textAge); //person节点下创建sex节点
XmlElement xsex = xdoc.CreateElement("sex");
xper.AppendChild(xsex); XmlText textsex = xdoc.CreateTextNode("男");
xsex.AppendChild(textsex); //保存xml文件
xdoc.Save(dirPath+"/"+"person.xml"); Response.Write("创建xml文件成功"); } //使用linq to xml创建xml文件
protected void Button2_Click(object sender, EventArgs e)
{
string dirPath = Server.MapPath("/xml"); DirectoryInfo dir = new DirectoryInfo(dirPath); if (!dir.Exists)
{
dir.Create();
} XDocument xdoc = new XDocument(); //使用XDocument 可以不需要document描述 //创建跟节点
XElement root = new XElement("root");
//添加跟节点
xdoc.Add(root); //创建person节点 XElement per = new XElement("person");
//添加person节点
root.Add(per); //创建属性节点
XAttribute xId = new XAttribute("id", ""); //name节点
XElement name = new XElement("name", "test");
//age节点
XElement age = new XElement("age", "");
//sex节点
XElement sex = new XElement("sex", "男"); //对person节点添加id属性 以及name sex age节点
per.Add(xId,name, sex, age); //保存linq to xml 文件
xdoc.Save(dirPath + "/" + "linqToXml.xml"); Response.Write("linq to xml保存文件成功"); } //使用linq to xml 批量添加person节点
//xDocument.Root.Add() 批量添加
protected void Button3_Click(object sender, EventArgs e)
{
string dirPath = Server.MapPath("/xml"); DirectoryInfo dir = new DirectoryInfo(dirPath); if (!dir.Exists)
{
dir.Create();
} XDocument xdoc = new XDocument(); //使用XDocument 可以不需要document描述 //创建跟节点 XElement root = new XElement("root"); xdoc.Add(root); Random r = new Random(); for (int i = ; i <= ;i++ )
{
//person节点
XElement per = new XElement("person");
//id属性
XAttribute xId = new XAttribute("id", i);
//name
XElement name = new XElement("name","test"+i);
//age
XElement age = new XElement("age",r.Next(,));
//sex
XElement sex = new XElement("sex", "男女"[r.Next()]); per.Add(xId, name, sex, age); xdoc.Root.Add(per); } //保存linq to xml 文件
xdoc.Save(dirPath + "/" + "personList.xml"); Response.Write("linq to xml批量添加成功");
} //linq to xml 查找节点
protected void Button5_Click(object sender, EventArgs e)
{
string path = Server.MapPath("/xml/personList.xml"); XDocument xdoc = XDocument.Load(path); var query = xdoc.DescendantNodes().Where( el => { //将el转为XElement对象
XElement xe = el as XElement;
if (xe == null)
{
return false;
} //找到age节点
XElement xAge = xe.Element("age");
//找到sex节点
XElement xSex = xe.Element("sex");
if(xAge !=null && xSex !=null)
{
int age = Convert.ToInt32(xAge.Value);
string sex = xSex.Value;
if (age >= && age <= && sex == "女")
{
return true;
} }
return false;
} ); //将查到的节点保存到xml文件中
string savePath = Server.MapPath("/xml/search.xml"); XDocument saveXdoc = new XDocument(); XElement root = new XElement("root"); saveXdoc.Add(root); root.Add(query); saveXdoc.Save(savePath); Response.Write("linq to xml查找成功");
} //linq to xml 修改节点
protected void Button4_Click(object sender, EventArgs e)
{
string path = Server.MapPath("/xml/personList.xml");
XDocument xdoc = XDocument.Load(path); var query = from p in xdoc.Descendants("person")
where Convert.ToInt32(p.Attribute("id").Value) ==
select p; var first = query.FirstOrDefault(); if (first != null)
{ XElement searchElement = first as XElement; XElement xname = searchElement.Element("name");
xname.Value = "刘德华"; xdoc.Save(path); Response.Write("linq to xml修改成功"); }
} //linq to xml 添加节点
protected void Button6_Click(object sender, EventArgs e)
{
string path = Server.MapPath("/xml/personList.xml"); XDocument xdoc = XDocument.Load(path);
//找到根节点
XElement root = xdoc.Element("root"); XElement xPer = new XElement("person"); XAttribute xid = new XAttribute("id", ""); XElement xName = new XElement("name","张学友"); XElement xSex = new XElement("sex","男"); XElement xAge = new XElement("age",""); root.Add(xPer); xPer.Add(xPer, xid, xName, xAge, xSex); xdoc.Save(path); Response.Write("添加成功"); } //linq to xml 删除节点
protected void Button7_Click(object sender, EventArgs e)
{
string path = Server.MapPath("/xml/personList.xml");
XDocument xdoc = XDocument.Load(path); var query = from p in xdoc.Descendants("person")
where Convert.ToInt32(p.Attribute("id").Value) ==
select p; var first = query.FirstOrDefault(); if (first != null)
{ XElement searchElement = first as XElement; searchElement.Remove(); xdoc.Save(path); Response.Write("linq to xml删除成功"); }
} }
}

linq to xml 简单的增、删、改、查、保存xml文件操作的更多相关文章

  1. Android SQLite(1)简单示例-增,删,改,查

    1.主要核心类,Sqlite编程要继承SQLiteOpenHelper import android.content.Context; import android.database.sqlite.S ...

  2. 好用的SQL TVP~~独家赠送[增-删-改-查]的例子

    以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化.  本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...

  3. iOS FMDB的使用(增,删,改,查,sqlite存取图片)

    iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...

  4. iOS sqlite3 的基本使用(增 删 改 查)

    iOS sqlite3 的基本使用(增 删 改 查) 这篇博客不会讲述太多sql语言,目的重在实现sqlite3的一些基本操作. 例:增 删 改 查 如果想了解更多的sql语言可以利用强大的互联网. ...

  5. django ajax增 删 改 查

    具于django ajax实现增 删 改 查功能 代码示例: 代码: urls.py from django.conf.urls import url from django.contrib impo ...

  6. MVC EF 增 删 改 查

    using System;using System.Collections.Generic;using System.Linq;using System.Web;//using System.Data ...

  7. ADO.NET 增 删 改 查

    ADO.NET:(数据访问技术)就是将C#和MSSQL连接起来的一个纽带 可以通过ADO.NET将内存中的临时数据写入到数据库中 也可以将数据库中的数据提取到内存中供程序调用 ADO.NET所有数据访 ...

  8. 简单的php数据库操作类代码(增,删,改,查)

    这几天准备重新学习,梳理一下知识体系,同时按照功能模块划分做一些东西.所以.mysql的操作成为第一个要点.我写了一个简单的mysql操作类,实现数据的简单的增删改查功能. 数据库操纵基本流程为: 1 ...

  9. python基础中的四大天王-增-删-改-查

    列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...

  10. MongoDB增 删 改 查

    增 增加单篇文档 > db.stu.insert({sn:'001', name:'lisi'}) WriteResult({ "nInserted" : 1 }) > ...

随机推荐

  1. 照片 GPS 信息查询

    照片 GPS 信息查询 经纬度查询 https://jingweidu.51240.com/ // 30.27832833333333, 120.01914111111111 30 + 16/60 + ...

  2. 【Linux】工作管理

    在进行工作管理的行为中,其实每个工作都是目前bash的子进程,即彼此间是有相关性的.我们无法以job control的方式由tty1的环境去管理tty2的bash 当只有一个终端时,可以出现提示符让你 ...

  3. MT【61】含参数二次函数最大最小值

    评:此类题目在高考中作为压轴题也曾考过,一般通性通法都如上面的做法,但是我们如果可以站在包络的角度,很多问题将变得很清晰:

  4. 2.9 C++使用默认参数的构造函数

    总结: 默认参数的构造函数,其默认参数必须置于参数列表的结尾. 设计类的构造函数的时候最好不要同时是用构造函数的重载和带参数的构造函数. 我们可以想象一个这样的场景:某一天书店整理库存,发现了一些非常 ...

  5. 洛谷 P4174 [NOI2006]最大获利 解题报告

    P4174 [NOI2006]最大获利 题目描述 新的技术正冲击着手机通讯市场,对于各大运营商来说,这既是机遇,更是挑战.THU 集团旗下的 CS&T 通讯公司在新一代通讯技术血战的前夜,需要 ...

  6. 洛谷 P2058 海港 解题报告

    P2058 海港 题目描述 小K是一个海港的海关工作人员,每天都有许多船只到达海港,船上通常有很多来自不同国家的乘客. 小K对这些到达海港的船只非常感兴趣,他按照时间记录下了到达海港的每一艘船只情况: ...

  7. SDL源码阅读笔记(2) video dirver的初始化及选择

    write by 九天雁翎(JTianLing) -- blog.csdn.net/vagrxie 前一篇文章 讲了SDL的除video以外的大部分模块.本文主要关注SDL的video模块部分. SD ...

  8. A1055. The World's Richest

    Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...

  9. python3之rabbitMQ

    1.RabbitMQ介绍 RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息 ...

  10. BellmanFord 最短路

    时间复杂度:O(VE) 最多循环V次,每次循环对每一条边(共E条边)判断是否可以进行松弛操作 最多V次:一个点的最短路,最多包含V-1个点(不包含该点), 如d1->d2->d3-> ...