XML基础学习02<linq to xml>
2016-01-30 00:00
411 查看
Linq to XML的理解
1:这是一种比较好的操作Xml的工具。
àXDocument 文档
àXElement 元素
àXAttribute 属性
àXText 文本
2:这里还是和我们之前创建xml的形式是一样的,只是这里更为的简单点。
创建xmldocument节点,创建根元素,创建person元素,将person元素添加到根元素下面,在创建id属性这里是键值对形式,创建name,sex元素。并因为他们是对象,可以使用name.Value="阿辉";,通过add方法统一的保存到person元素。
public static void Main(string[] args)
{
var doc = new XDocument();
//创建根元素
var root = new XElement("root");
doc.Add(root);
var person = new XElement("person");
XAttribute xId=new XAttribute("id","003");
XElement name=new XElement("name");
var sex = new XElement("dex");
name.Value = "阿辉";
sex.Value = "23";
person.Add(xId,name,sex);
root.Add(person);
doc.Save("ahuiLinq.xml");
}
3:再来一个简单的XML文档的形式。
直接就好像在写LINQ一样,直接就写完了。
static void Main(string[] args)
{
new XDocument(
new XElement("root",
new XElement("person",
new XAttribute("id","002"),
new XElement("name","ahji"),
new XElement("age","23"),
new XElement("sex","女")
))).Save("ahui02_XML.xml");
}
其实这里面的原理和之前我们写的那种形式的是一样的。我们只需要按照之前的顺序写下去就行了。
4:我们可以来好好的感觉下XML的强大之处。
_——》使用xml将数据库中的数据进行临时的保存
var xdoc=new XDocument(new XElement("PersonCollection"));
Random random=new Random();
//我们可以从文本文件和DB中取到数据,保存到xml文件中。
for (int i = 0; i <100; i++)
{
xdoc.Root.Add(
new XElement("Person",
new XAttribute("id",i+1),
new XElement("name","阿辉"+i),
new XElement("age",random.Next(41)),
new XElement("sex","男女"[random.Next(2)]))
);
}
xdoc.Save("Db中读取的数据.xml");
这里有一个小的知识点,我们发现在最后面那个有个男女的字符,但是后面直接跟了个[]这个是利用随机数是0,1来决定前面字符串中的位置,显示的是男或女。感觉很高端的样子。
new XElement("sex","男女"[random.Next(2)]))
5:直接将字符串转换为xml文档,那么就是在字符串中直接写代码就行了。
XDocument.Parse(@"
<root>
<person id=""004"">
<name>阿辉</name>
<age>23</age>
<sex>男</sex>
</person>
</root>
").Save("stringToXml.xml");
这样的做法就比较之前的更加的简单了。
6:当xml文档的内容特别多,且我们需要某个文件的时候就需要使用我们查找的功能,
这里有具体的步骤。
*:加载xml文件
*:查找
*:具体的查找公式,这里的e是节点对象,也是属性,标签,这里主要进行判断。
//var query=xdoc.DescendantNodes().where(e=>{返回bool值得判断条件,其实这里就是写逻辑判断})+xdoc.DescendantNodes()返回全部的节点集合
string path = "Db中读取的数据.xml";
XDocument xdoc = XDocument.Load(path);
var query = xdoc.
DescendantNodes().
Where(e =>
{
//返回Bool值得判断条件,e是节点对象,有属性,标签,
XElement els = e as XElement;
if (els == null) return false;
XElement age = els.Element("age");
XElement sex = els.Element("女");
if(age !=null && sex !=null)
{
int numAge = Convert.ToInt32(age.Value);
if (numAge >= 20 && numAge <= 25)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
});
XElement root=new XElement("root");
//这里遍历得到的数据就是XElement数据。
foreach (XElement item in query)
{
root.Add(item);
}
new XDocument(root).Save("Search.xml");
1:这是一种比较好的操作Xml的工具。
àXDocument 文档
àXElement 元素
àXAttribute 属性
àXText 文本
2:这里还是和我们之前创建xml的形式是一样的,只是这里更为的简单点。
创建xmldocument节点,创建根元素,创建person元素,将person元素添加到根元素下面,在创建id属性这里是键值对形式,创建name,sex元素。并因为他们是对象,可以使用name.Value="阿辉";,通过add方法统一的保存到person元素。
public static void Main(string[] args)
{
var doc = new XDocument();
//创建根元素
var root = new XElement("root");
doc.Add(root);
var person = new XElement("person");
XAttribute xId=new XAttribute("id","003");
XElement name=new XElement("name");
var sex = new XElement("dex");
name.Value = "阿辉";
sex.Value = "23";
person.Add(xId,name,sex);
root.Add(person);
doc.Save("ahuiLinq.xml");
}
3:再来一个简单的XML文档的形式。
直接就好像在写LINQ一样,直接就写完了。
static void Main(string[] args)
{
new XDocument(
new XElement("root",
new XElement("person",
new XAttribute("id","002"),
new XElement("name","ahji"),
new XElement("age","23"),
new XElement("sex","女")
))).Save("ahui02_XML.xml");
}
其实这里面的原理和之前我们写的那种形式的是一样的。我们只需要按照之前的顺序写下去就行了。
4:我们可以来好好的感觉下XML的强大之处。
_——》使用xml将数据库中的数据进行临时的保存
var xdoc=new XDocument(new XElement("PersonCollection"));
Random random=new Random();
//我们可以从文本文件和DB中取到数据,保存到xml文件中。
for (int i = 0; i <100; i++)
{
xdoc.Root.Add(
new XElement("Person",
new XAttribute("id",i+1),
new XElement("name","阿辉"+i),
new XElement("age",random.Next(41)),
new XElement("sex","男女"[random.Next(2)]))
);
}
xdoc.Save("Db中读取的数据.xml");
这里有一个小的知识点,我们发现在最后面那个有个男女的字符,但是后面直接跟了个[]这个是利用随机数是0,1来决定前面字符串中的位置,显示的是男或女。感觉很高端的样子。
new XElement("sex","男女"[random.Next(2)]))
5:直接将字符串转换为xml文档,那么就是在字符串中直接写代码就行了。
XDocument.Parse(@"
<root>
<person id=""004"">
<name>阿辉</name>
<age>23</age>
<sex>男</sex>
</person>
</root>
").Save("stringToXml.xml");
这样的做法就比较之前的更加的简单了。
6:当xml文档的内容特别多,且我们需要某个文件的时候就需要使用我们查找的功能,
这里有具体的步骤。
*:加载xml文件
*:查找
*:具体的查找公式,这里的e是节点对象,也是属性,标签,这里主要进行判断。
//var query=xdoc.DescendantNodes().where(e=>{返回bool值得判断条件,其实这里就是写逻辑判断})+xdoc.DescendantNodes()返回全部的节点集合
string path = "Db中读取的数据.xml";
XDocument xdoc = XDocument.Load(path);
var query = xdoc.
DescendantNodes().
Where(e =>
{
//返回Bool值得判断条件,e是节点对象,有属性,标签,
XElement els = e as XElement;
if (els == null) return false;
XElement age = els.Element("age");
XElement sex = els.Element("女");
if(age !=null && sex !=null)
{
int numAge = Convert.ToInt32(age.Value);
if (numAge >= 20 && numAge <= 25)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
});
XElement root=new XElement("root");
//这里遍历得到的数据就是XElement数据。
foreach (XElement item in query)
{
root.Add(item);
}
new XDocument(root).Save("Search.xml");