linq xml 查询
类别:编程学习 浏览量:1825
时间:2015-3-29 linq xml 查询
linq xml 查询一、LINQ XML属性列表
属性 | 说明 |
Document | 获取此 XObject 的 XDocument |
EmptySequence | 获取空的元素集合 |
FirstAttribute | 获取此元素的第一个属性 |
FirstNode | 获取此节点的第一个子节点 |
HasAttributes | 获取一个值,该值指示此元素是否至少具有一个属性 |
HasElements | 获取一个值,该值指示此元素是否至少具有一个子元素 |
IsEmpty | 获取一个值,该值指示此元素是否不包含内容 |
LastAttribute | 获取此元素的最后一个属性 |
LastNode | 获取此节点的最后一个子节点 |
Name | 获取或设置此元素的名称 |
NextNode | 获取此节点的下一个同级节点 |
NodeType | 获取此节点的节点类型 |
Parent | 获取此 XObject 的父级 XElement |
PreviousNode | 获取此节点的上一个同级节点 |
Value | 获取或设置此元素的串连文本内容 |
二、LINQ XML方法列表
方法 | 说明 |
Add | 将指定的内容添加为此 XContainer 的子级 |
AddAfterSelf | 紧跟在此节点之后添加指定的内容 |
AddAnnotation | 将对象添加到此 XObject 的批注列表 |
AddBeforeSelf | 紧邻此节点之前添加指定的内容 |
AddFirst | 将指定的内容作为此文档或元素的第一个子级添加 |
Ancestors | 返回此节点的上级元素的集合 |
AncestorsAndSelf | 返回元素集合,其中包含此元素及其上级 |
Annotation | 从此 XObject 获取指定类型的第一个批注对象 |
Annotations | 获取此 XObject 的指定类型的批注集合 |
Attribute | 返回具有指定 XName 的此 XElement 的 XAttribute |
Attributes | 返回此元素的属性集合 |
CreateReader | 使用 readerOptions 参数指定的选项创建 XmlReader |
CreateWriter | 创建可用于将节点添加至 XContainer 的 XmlWriter |
DescendantNodes | 按文档顺序返回此文档或元素的子代节点集合 |
DescendantNodesAndSelf | 返回节点的集合,而这些节点包含此元素以及此元素的所有子代节点,并将它们按文档顺序排列 |
Descendants | 按文档顺序返回此文档或元素的子代元素集合 |
DescendantsAndSelf | 返回元素的集合,而这些元素包含此元素以及此元素的所有子代元素,并按文档顺序排列它们 |
Elements | 按文档顺序返回此元素或文档的经过筛选的子元素集合 |
ElementsAfterSelf | 按文档顺序返回此节点后的同级元素集合 |
ElementsBeforeSelf | 按文档顺序返回此节点前的同级元素集合 |
GetDefaultNamespace | 获取此 XElement 的默认 XNamespace |
GetNamespaceOfPrefix | 获取此 XElement 的与特定前缀关联的命名空间 |
GetPrefixOfNamespace | 获取与此 XElement 的命名空间关联的前缀 |
IsAfter | 确定当前节点是否按文档顺序显示在指定节点之后 |
IsBefore | 确定当前节点是否按文档顺序显示在指定节点之前 |
Load | 从文件路径、TextReader、XmlReader、Stream中加载Xml数据 |
Nodes | 按文档顺序返回此元素或文档的子节点集合 |
NodesAfterSelf | 按文档顺序返回此节点后的同级节点的集合 |
NodesBeforeSelf | 按文档顺序返回此节点前的同级节点的集合 |
Parse | 从包含 XML 的字符串加载 XElement |
Remove | 从节点父级中删除此节点 |
RemoveAll | 从此 XElement 中移除节点和属性 |
RemoveAnnotations | 从此 XObject 移除指定类型的批注 |
RemoveAttributes | 移除此 XElement 的属性 |
RemoveNodes | 从此文档或元素中移除子节点 |
ReplaceAll | 使用指定的内容替换此元素的子节点和属性 |
ReplaceAttributes | 使用指定的内容替换此元素的属性 |
ReplaceNodes | 使用指定的内容替换此文档或元素的子节点 |
ReplaceWith | 使用指定的内容替换此节点 |
Save | 将此元素序列化为文件、XmlWriter、TextWriter、Stream |
SetAttributeValue | 设置属性的值、添加属性或移除属性 |
SetElementValue | 设置子元素的值、添加子元素或移除子元素 |
SetValue | 设置此元素的值 |
WriteTo | 将此元素写入 XmlWriter |
三、创建XML元素
使用XDocument的构造函数可以构造一个Xml文档对象;使用XElement对象可以构造一个xml节点元素,使用XAttribute构造函数可以构造元素的属性;使用XText构造函数可以构造节点内的文本。
class Program
{
static void Main(string[] args)
{
XElement xml =
new XElement("Persons",
new XElement("Person",
new XElement("Name", "刘备"),
new XElement("Age", "28")
),
new XElement("Person",
new XElement("Name", "关羽"),
new XElement("Age", "27")
)
);
xml.Save(@"D:\\123.xml");
Console.ReadKey();
}
}
生成的XML文件
<?xml version="1.0" encoding="utf-8"?>
<Persons>
<Person>
<Name>刘备</Name>
<Age>28</Age>
</Person>
<Person>
<Name>关羽</Name>
<Age>27</Age>
</Person>
</Persons>
又如
class Program
{
static void Main(string[] args)
{
//创建处理指令
XProcessingInstruction instruction = new XProcessingInstruction("xml-stylesheet","href=\\"hello.css\\" type = \\"text/css\\"");
//创建声明对象
XDeclaration xDeclaration = new XDeclaration("1.0","GB2312","yes");
//创建文档类型
XDocumentType documentType = new XDocumentType("Person", null, "Person.dtd", null);
//创建XmlCData数据
XCData data = new XCData("<h1>神奇的刘备</h1>");
//创建XDocument文档
XDocument xDoc = new XDocument();
XElement xml =
new XElement("Persons",
new XElement("Person",
new XAttribute("Description", "此人龙凤之姿 天日之表;"),
new XElement("Name", data),
new XElement("Age", "28")
),
new XElement("Person",
new XElement("Name", "关羽"),
new XElement("Age", "27")
)
);
xDoc.Add(documentType);
xDoc.Add(instruction);
xDoc.Declaration = xDeclaration;
xDoc.Add(xml);
xDoc.Save(@"D:\\123.xml");
Console.ReadKey();
}
}
输出XML
<?xml version="1.0" encoding="gb2312" standalone="yes"?>
<!DOCTYPE Person SYSTEM "Person.dtd">
<?xml-stylesheet href="hello.css" type = "text/css"?>
<Persons>
<Person Description="此人龙凤之姿 天日之表;">
<Name><![CDATA[<h1>神奇的刘备</h1>]]></Name>
<Age>28</Age>
</Person>
<Person>
<Name>关羽</Name>
<Age>27</Age>
</Person>
</Persons>
四、使用linq xml 读取xml
static void Main(string[] args)
{
string xmlString = "<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?><Persons><Person Description=\\"牛人\\"><Name>刘备</Name><Age>28</Age></Person></Persons>";
XElement xe = XElement.Parse(xmlString,LoadOptions.SetLineInfo);
//读取属性值
string ArriValue = xe.Elements("Person").First().Attribute("Description").Value;
//又或者
//string ArriValue = xe.Element("Person").Attribute("Description").Value;
Console.WriteLine(ArriValue); //输出 牛人
//读取元素 读取Name的后面的第一个兄弟元素
XElement xe1 = xe.Element("Person").Element("Name").ElementsAfterSelf().First();
Console.WriteLine(xe1.Value); //输出 28
//读取父节点
XElement xe2 = xe1.Parent;
Console.WriteLine(xe2.Name);
Console.ReadKey();
}
class Program
{
static void Main(string[] args)
{
var xDoc = new XDocument(new XElement( "root",
new XElement("dog",
new XText("dog said black is a beautify color"),
new XAttribute("color", "black")),
new XElement("cat"),
new XElement("pig", "pig is great")));
//xDoc输出xml的encoding是系统默认编码,对于简体中文操作系统是gb2312
//默认是缩进格式化的xml,而无须格式化设置
xDoc.Save(Console.Out);
Console.WriteLine();
var query = from item in xDoc.Element( "root").Elements()
select new
{
TypeName = item.Name,
Saying = item.Value,
Color = item.Attribute("color") == null?(string)null:item.Attribute("color").Value
};
foreach (var item in query)
{
Console.WriteLine("{0} 's color is {1},{0} said {2}",item.TypeName,item.Color??"Unknown",item.Saying??"nothing");
}
Console.Read();
}
}
五、linq xml修改数据
static void Main(string[] args)
{
string xmlString = "<?xml version=\\"1.0\\" encoding=\\"utf-8\\"?><Persons><Person Description=\\"牛人\\"><Name>刘备</Name><Age>28</Age></Person></Persons>";
XElement xe = XElement.Parse(xmlString, LoadOptions.SetLineInfo);
//这是添加在最后,如果想添加在最前面可以使用AddFirst,
//添加在本节点之前AddBeforSelf,添加在本节点之后AddAfterSelf
xe.Add(new XElement("Person",
new XElement("Name", "关羽"),
new XElement("Age", 26)
)
);
//删除所有子节点
xe.RemoveAll();
标签:linq
您可能感兴趣
- LINQ中Aggregate的用法
- datatable linq查询
- linq to sql 中Concat、Union、Intersect、Except
- linq中join用法
- Linq中select查询
- linq 数据类型转换
- 如何查看linq生成的sql
- linq中延迟执行
- Linq中的TakeWhile和SkipWhile
- 使用 LINQPad 调试linq以及lambda表达式
- linq distinct去重
- LINQ TO SQL 中join
- linq中let
- linq中AsEnumerable和AsQueryable的区别
- linq not in 查询
- list使用linq排序
- 原创图画书,以儿童视角讲述中国故事(以儿童视角讲述中国故事)
- 八月再见 愿你岁月不扰,余生静好(八月再见愿你岁月不扰)
- 赏读 八月再见,九月你好(赏读八月再见九月你好)
- 散文 八月再见,九月,我在风中等你(散文八月再见九月)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
热门推荐
- sql语句去除重复记录(使用SQL语句去掉重复的记录两种方法)
- extjs实现树形下拉框
- sqlserver函数条件判断(Sql Server 开窗函数Over的使用实例详解)
- dedecms网站二次开发教程(DEDECMS实现自定义表单模型分步提交实现思路)
- mysql为什么用decimal类型(MySQL decimal unsigned更新负数转化为0)
- dedecms中的有些功能如何修改(DedeCms参考手册、函数及文件大全)
- Guid ToString的格式
- JavaScript将具有父子关系的数据转化成树形结构,供tree控件使用
- reactnative混合开发教程(教你使用vscode 搭建react-native开发环境)
- nodejssocket文件传输(node+socket实现简易聊天室功能)