标签:
XML的文档描述
<?xml version="1.0" encoding="utf-8">
每一个XML文档必须有,并且只能有一个跟节点(xml大小写敏感)
标签一般成对存在,例如:<a></a>等,但是如果标签没有子数据可以写成封闭的 例如<a />
XML的存储结构有以下两种
<标签名>值</标签名>
<标签名 属性="值" 属性2="值"/>
例如:
<person name="张三" age="25" Gender="1"/>
========================================
xml使用 <!--这是注释内容--> 进行注释
<?xml version="1.0" encoding="utf-8"?> <studetn> <stuinfo id="001"> <name>张三</name> <age>25</age> <Gender>1</Gender> </stuinfo> <stuinfo id="002"> <name>李四</name> <age>25</age> <Gender>1</Gender> </stuinfo> <stuinfo id="003"> <name>王五</name> <age>25</age> <Gender>1</Gender> </stuinfo> </studetn>
xml 的另外一种注释:<![CDATA[..........]]>
<news> <title>标题</title> <content><a href="http://www.baidu.com">今天的头条新闻</a></content> <!--问题来了,我这个content标签里面只是想放一个超链接作为内容,可是我这个超链接是一个<a></a>这样的成对出现的,xml会把它识别成一个节点,那我不像让这个a标签变成一个节点,仅仅是把他当成内容,怎么办呢?--> </news>
请看下面的这种注释方式:<![CDATA[..........]]>
<?xml version="1.0" encoding="gb2312"?> <news> <title>标题</title> <content><![CDATA[<a href="http://www.baidu.com">今天的头条新闻</a>]]></content> </news>
用C#语句创建一个XML文档
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml; namespace xml { class Program { /// <summary> /// 创建一个XML文档 /// </summary> /// <param name="args"></param> static void Main(string[] args) { //命名空间:System.Xml; //类库: XmlDocument 文档 // XmlElement 元素 // XmlAttribute 属性 // XmlText 内容 XmlDocument xdoc = new XmlDocument(); //表示 XML 文档。 //所有的元素使用文档节点创建 XmlDeclaration xdec = xdoc.CreateXmlDeclaration("1.0", "gb2312", null); xdoc.AppendChild(xdec); //将指定的节点添加到该节点的子节点列表的末尾。 XmlElement xele = xdoc.CreateElement("root"); xdoc.AppendChild(xele); //将指定的节点添加到该节点的子节点列表的末尾。 XmlAttribute xAttr = xdoc.CreateAttribute("id"); xAttr.Value = "101"; //获取或设置节点的值。 XmlText txt = xdoc.CreateTextNode("我是一个文本节点"); xele.AppendChild(txt); //将指定的节点添加到该节点的子节点列表的末尾。 xele.Attributes.Append(xAttr); //将指定的特性插入集合,并将其作为集合中的最后一个节点。 xdoc.Save("D:/XML.XML"); } } }
创建好的XML文档内容:
查到节点: 例如在我的E盘下有一个xml.xml的文件,我要根据某个值获取它的父节点
<?xml version="1.0" encoding="utf-8"?> <studetn> <stuinfo id="001"> <name>张三</name> <age>25</age> <Gender>1</Gender> </stuinfo> <stuinfo id="002"> <name>李四</name> <age>25</age> <Gender>1</Gender> </stuinfo> <stuinfo id="003"> <name>王五</name> <age>25</age> <Gender>1</Gender> </stuinfo> </studetn>
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Xml.Linq; namespace ReadXml { class Program { /// <summary> /// 根据一个内容的值,来查找父节点(获取父节点的所有内容) /// </summary> /// <param name="args"></param> static void Main(string[] args) { XDocument xdoc= XDocument.Load("e:/xml.xml");//从某个文件中去加载xml文档 //将查到到的内容放到XElement中,所以我们建立一个XElement的泛型集合,因为我们查找到的节点可能有多个 List<XElement> list = new List<XElement>(); SearchElements(xdoc.Root, list); } public static void SearchElements(XElement ele, List<XElement> list) { //首先遍历ele的所有子节点 foreach (XElement item in ele.Elements()) //Elements()表示ele这个节点的所有子节点.即:子元素集合。 { //判断这个元素的名字是否为name,如果name里存的值是“张三” if (item.Name.LocalName == "name") { if (item.Value == "张三") { list.Add(item.Parent);//将"张三"这个节点的负节点添加到list中去 } } //如果item里面还有子节点就递归(关于递归可以参考asp.net文章中的<a target=_blank href="http://blog.csdn.net/fanbin168/article/details/45623263" target="_blank">TreeView 树菜单 节点</a><span class="gray"></span>) SearchElements(item, list); } } } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
标签:
原文地址:http://blog.csdn.net/fanbin168/article/details/46703739