using System;
using System.Linq;
using System.Xml.Linq; namespace Sample2
{
class Program
{
static void Main(string[] args)
{
#region 写文件一(生成节点性质的)
XDocument xdoc = new XDocument();
XElement Persons = new XElement("Persons");
XElement Peorson1 = new XElement("Person"); //增加一个Person节点
Peorson1.Add(new XElement("Name", "Tom"));//在ptom下再增加子节点
Peorson1.Add(new XElement("Age", ""));
Persons.Add(Peorson1);
XElement Person2 = new XElement("Person");
Person2.Add(new XElement("Name", "Jack"));
Person2.Add(new XElement("Age", ""));
Persons.Add(Person2); xdoc.Add(Persons);//把根元素添加到文档中
xdoc.Save("myXml1.xml");//保存 Console.WriteLine("xml文件一生成成功!");
Console.ReadLine(); /* 生成myXml.xml内容如下
*
<?xml version="1.0" encoding="utf-8"?>
<Persons>
<Person>
<Name>Tom</Name>
<Age>18</Age>
</Person>
<Person>
<Name>Jack</Name>
<Age>20</Age>
</Person>
</Persons>
*/
#endregion #region 读XML 读取节点格式的值
XDocument xd = XDocument.Load("myXml1.xml");
foreach (XElement item in xd.Root.Descendants("Person"))//得到每一个Person节点,得到这个节点再取他的Name的这个节点的值
{
Console.WriteLine("姓名:{0} 年龄:{1}", item.Element("Name").Value, item.Element("Age").Value);//Person的节点的下得节点为Name的
}
Console.ReadLine();
#endregion #region 带节点格式的XML查找数据
var result = xd.Descendants("Person")
.Where(p => p.Element("Name").Value.ToLower().Equals("tom"))
.Select(p => new { name = p.Element("Name").Value, age = p.Element("Age").Value }).FirstOrDefault(); //若要筛选就用上这个语句
Console.WriteLine("姓名:{0} 年龄:{1}", result.name, result.age);
Console.ReadLine();
#endregion #region 写文件二(生成属性性质的)
XDocument xdoc1 = new XDocument();
XElement Pers = new XElement("Persons");
XElement p1 = new XElement("Person");
p1.Add(new XAttribute("Name", "tom"));//添加XAttribute就生成属性
p1.Add(new XAttribute("Age", ""));
Pers.Add(p1); XElement p2 = new XElement("Person");
p2.Add(new XAttribute("Name", "jack"));
p2.Add(new XAttribute("Age", ""));
Pers.Add(p2); xdoc1.Add(Pers);//把根元素添加到文档中
xdoc1.Save("myXml2.xml");//保存 Console.WriteLine("xml文件二生成成功!");
Console.ReadLine(); /* 生成myXml.xml内容如下
*
<?xml version="1.0" encoding="utf-8"?>
<Persons>
<Person Name="tom" Age="18" />
<Person Name="jack" Age="20" />
</Persons>
*/
#endregion #region 读XML 读取属性格式的值
XDocument xd1 = XDocument.Load("myXml2.xml");
foreach (XElement item in xd1.Root.Descendants("Person"))//得到每一个Person节点,得到这个节点再取他的Name的这个节点的值
{
Console.WriteLine("姓名:{0} 年龄:{1}", item.Attribute("Name").Value, item.Attribute("Age").Value);//Person的节点的下得节点为Name的
}
Console.ReadLine();
#endregion #region 带属性格式的XML查找数据
var result1 = xd1.Descendants("Person")
.Where(p => p.Attribute("Name").Value.Equals("tom"))
.Select(p => new { name = p.Attribute("Name").Value, age = p.Attribute("Age").Value }).FirstOrDefault(); //若要筛选就用上这个语句
Console.WriteLine("姓名:{0} 年龄:{1}", result1.name, result1.age);
Console.ReadLine();
#endregion
}
}
}

C#使用Linq To XML读取XML,Linq生成XML,Linq创建带属性或带节点XML的更多相关文章

  1. Linq to XML 读取XML 备忘笔记

    本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html Linq to XML 读取XML 备忘笔记 最近一个项目中有 ...

  2. XML系列之--Linq操作带属性的XML(四)

    关于XML,之前解析过电文收发方面的,就是所谓的带表头.前缀(命名空间)SOAP格式.这次需求是解析一个xml的模板(xls内容),然后填充数据,最后保存.需要时可转换xls.pdf等文件.关于这种带 ...

  3. C# xml 读xml、写xml、Xpath、Xml to Linq、xml添加节点 xml修改节点

    #region XDocument //创建XDocument XDocument xdoc2 = new XDocument(); XElement xel1= new XElement(" ...

  4. C#基础笔记---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

  5. C#基础---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

  6. XML读取的小例子

    public void CalculateLeave(string userAcount, string xml) //传过来的是xml内容 { try { var xmlDoc = new Syst ...

  7. xml 读取递归算法

    xml 读取递归算法:

  8. paip.获取proxool的配置 xml读取通过jdk xml 初始化c3c0在代码中总结

    paip.获取proxool的配置  xml读取通过jdk xml 初始化c3c0在代码中  xml读取通过jdk xml 初始化c3c0在代码中.. ... 作者Attilax  艾龙,  EMAI ...

  9. Qt XML读取写入操作

    XML(eXtensible Markup Language,可扩展标记语言)是普通用于数据交换和数据存储的一种多用途文本文件格式: SVG(可标量矢量图形)XML格式,QtSvg模块提供了可用于载入 ...

随机推荐

  1. 三节点搭建openstack-Mitaka版本

    前言: 现在的云计算平台已经非常火,也非常的稳定了.像阿里云平台,百度云平台等等,今天咱们基于openstack来搭建一个云平台 注意: 本次平台搭建为三节点搭建(没有外部存储节点,所有存储为本地存储 ...

  2. BZOJ4860 Beijing2017树的难题(点分治+单调队列)

    考虑点分治.对子树按照根部颜色排序,每次处理一种颜色的子树,对同色和不同色两种情况分别做一遍即可,单调队列优化.但是注意到这里每次使用单调队列的复杂度是O(之前的子树最大深度+该子树深度),一不小心就 ...

  3. FTP-成型版本

    1. 旧知识回顾-反射 hasattr(object, name) 说明:判断对象object是否包含名为name的属性(方法) 测试代码如下: class tt(object): def __ini ...

  4. 【题解】CF#983 E-NN country

    首先,我们从 u -> v 有一个明显的贪心,即能向上跳的时候尽量向深度最浅的节点跳.这个我们可以用树上倍增来维护.我们可以认为 u 贪心向上跳后不超过 lca 能跳到 u' 的位置, v 跳到 ...

  5. 【题解】洛谷P4735最大异或和

    学习了一下可持久化trie的有关姿势~其实还挺好理解的,代码也短小精悍.重点在于查询某个历史版本的trie树上的某条边是否存在,同样我们转化到维护前缀和来实现.同可持久化线段树一样,我们为了节省空间继 ...

  6. Codeforces Round #469 (Div. 2) E. Data Center Maintenance

    tarjan 题意: 有n个数据维护中心,每个在h小时中需要1个小时维护,有m个雇主,他们的中心分别为c1,c2,要求这两个数据中心不能同时维护. 现在要挑出一个数据中心的子集,把他们的维护时间都推后 ...

  7. BZOJ3339:Rmq Problem & BZOJ3585 & 洛谷4137:mex——题解

    前者:https://www.lydsy.com/JudgeOnline/problem.php?id=3339 后者: https://www.lydsy.com/JudgeOnline/probl ...

  8. Communications link failure

    针对数据库Communications link failure的错误,可以理解为有两种策略解决: 策略1(推荐):     数据池配置 <property name="minEvic ...

  9. purfer序列题表

    purfer序列是对于带编号(互不相同)的无根树进行编码得到的,对于同样的n个顶点,其有n-2项,有n^(n-2)种,而且每种都合法(如果只要求他是一棵树的话)(可以通过证明翻译过程维持了各部分的树的 ...

  10. HDU3068:最长回文(Manacher模板)

    最长回文 Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...