XML(eXtensible Markup Language)即可扩展标记语言。不一样于数据库的数据存储,xml并不在于能存储多大容量的数据。而在于它能将一些譬如配置信息结构化的存储起来,方便程序读取使用或显示。目的并不在乎存储上。因此它适用于存储结构化的数据信息。这是它的长处。举个简单的例子,好比对于web开发的配置信息,就可使用xml文件存储这些数据。当程序运行的时候就能够读取了。由于是结构化存储的,读取过程思路也会很清晰。固然啦,你把数据存到数据库里或者文本文件里。也能够啊。可是前者有点大材小用,还须要建表。后者没有一个清晰的逻辑结构。读取后再作处理会变得十分麻烦。xml就很好的解决了这一点。node
楼主也是第一次使用xml文件。以为用起来还不错,故分享之。因为掌握不是很深,楼主只是对xml文件的写入和读取作介绍。web
1、写数据到xml文件数据库
xml文件以下;c#
--我将数据库两张表之间哪些字段是关联的,进行了记录,而后写入xml文件。方便之后两张表数据互相导入。 <Relationship><!--根节点--> <tableRelationship><!--表关系--> <basicInfo><!--基本信息--> <sourDB>SourTest</sourDB><!--源数据库名称--> <DesDB>DesTest</DesDB><!--目的数据库名称--> <sourTb>wx_dict_dept</sourTb><!--源数据库的一张表--> <DesTb>hos_dic_dept</DesTb><!--目的数据库的一张表--> </basicInfo> <fieldRelationship><!--表与表之间的关联的字段关系--> <fieldName>OrgId->org_id</fieldName><!--源表中的orgId字段和目的表中org_id字段绑定。下同。--> <fieldName>DeptCode->dept_code</fieldName> <fieldName>DeptName->dept_name</fieldName> <fieldName>DeptAddress->dept_address</fieldName> <fieldName>Intro->dept_intro</fieldName> </fieldRelationship> </tableRelationship> </Relationship>
//创建表关系。写入xml文件 public void AddTableRelationship(List<string> T, List<string> basicinfo) { XmlDocument xml = new XmlDocument(); XmlNode root;//生成根节点 if (File.Exists("tableRelationship.xml")) { xml.Load("tableRelationship.xml");//加载xml文件 } root = xml.SelectSingleNode("Relationship"); //XmlElement root= xml.CreateElement("Relationship");//若是是不存在xml文件,就采起这样的方式。 //xml.AppendChild(root); XmlElement tableRelationship = xml.CreateElement("tableRelationship");//建立一个叫tableRelationship的节点 root.AppendChild(tableRelationship);//让其成为根节点的孩子节点。后面的同理可得。以此来构建一个数据结构,便于后期存储结构化数据。 XmlElement database = xml.CreateElement("basicInfo"); tableRelationship.AppendChild(database); XmlElement sourDB = xml.CreateElement("sourDB"); sourDB.InnerText = basicinfo[0];//对节点写入内容. database.AppendChild(sourDB); XmlElement DesDB = xml.CreateElement("DesDB"); DesDB.InnerText = basicinfo[1]; database.AppendChild(DesDB); XmlElement SourTb = xml.CreateElement("sourTb"); SourTb.InnerText = basicinfo[2]; database.AppendChild(SourTb); XmlElement DesTb = xml.CreateElement("DesTb"); DesTb.InnerText = basicinfo[3]; database.AppendChild(DesTb); XmlElement fieldRelationship = xml.CreateElement("fieldRelationship"); tableRelationship.AppendChild(fieldRelationship); foreach (var item in T)//循环写入字段关系 { XmlElement fieldName = xml.CreateElement("fieldName"); fieldName.InnerText = item; fieldRelationship.AppendChild(fieldName); } xml.Save(@"tableRelationship.xml");//保存便可。这样数据就按照构造好的结构,写入xml文件里了。 }
以上代码亲测。请耐心看,相信你会理解。理解了也就不能实现了。数据结构
2、读取xml文件less
//读取xml文件,获取表关系 public List<tablerelationship> GetTableRelationship() { List<tablerelationship> list = new List<tablerelationship>(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load("tableRelationship.xml"); //加载xml文件 XmlNode xn = xmlDoc.SelectSingleNode("Relationship"); XmlNodeList xnl = xn.ChildNodes;//获得根节点的孩子节点。即全部的tableRelationship节点 foreach (XmlNode xnf in xnl) { XmlElement xe = (XmlElement)xnf; XmlNodeList xnf1 = xe.ChildNodes;//获得tableRelationship节点的孩子节点。即database 和 fieldRelationship int temp = 0; tablerelationship tl = new tablerelationship(); foreach (XmlNode xn2 in xnf1) { //Console.WriteLine(xn2.InnerText);//显示子节点点文本 temp++; XmlElement xnf2_1 = (XmlElement)xn2; if (temp == 1) { foreach (XmlNode xn3 in xnf2_1) { tl.basicinfo.Add(xn3.InnerText);//遍历全部的basicinfo里的内容 } } if (temp == 2) { foreach (XmlNode xn3 in xnf2_1) { tl.filedRelationship.Add(xn3.InnerText);//遍历全部的fieldRelationship的内容。 } } } list.Add(tl); } return list; }
3、修改和删除xml文件的节点信息spa
//修改表关系,写入xml文件 public void UpdataTableRelationship(List<string> basicinfo,List<string> relation) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(@"tableRelationship.xml"); //加载xml文件 //获取根节点的全部子节点 XmlNodeList nodeList = xmlDoc.SelectSingleNode("Relationship").ChildNodes;//获取全部的关系表 //遍历全部子节点 foreach (XmlNode xn in nodeList) { XmlElement xe = (XmlElement)xn; //将子节点类型转换为XmlElement类型 XmlNodeList nls = xe.ChildNodes;//获得tableRelationship节点中的(basicinfo节点和fieldRelationship节点) int temp = 0; bool f = false; foreach (XmlNode xn1 in nls)//遍历 { temp++; bool flag = false; XmlElement xe2 = (XmlElement)xn1; //转换类型 if (temp%2 ==1) { //匹配信息,若不是我要修改的表关系就continue int x = 0; foreach (XmlNode xn3 in xe2)//遍历basicinfo节点的内容 { if (basicinfo[x] == xn3.InnerText) { x++; } else { flag = true; break; } if (x == 4) { f = true; flag= true; } } if (flag == true) { continue; } } if (f) { xe2.RemoveAll();//删除fieldRelationship的内容 if (relation.Count == 0) { //删除一个表关系节点 XmlNode xx = xe2.ParentNode; xx.ParentNode.RemoveChild(xx);//若是两张表的关系已经不存在了,则要删除这个节点即tableRelationship节点 } else { foreach (var item in relation) { XmlElement fieldName = xmlDoc.CreateElement("fieldName"); fieldName.InnerText = item;//将修改信息从新写入fieldRelationship节点 xe2.AppendChild(fieldName); } } goto less; } } } less: xmlDoc.Save(@"tableRelationship.xml");//保存。 }楼主因为直接重本身的一个项目里面拖过来的代码,全部代码里带有其余逻辑。致使举得例子有点复杂。可是只要你认真看一遍,相信你会理解的。最后祝你对xml入门有所收获。