XDocument操作xml文件基本操作
一、读取xml文件,现在存在这样一个DefaultStyle.xml <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;"><?xmlversion="1.0" encoding="utf-8" ?> <SiteConfig> <Suit Name="旅游"defPic="../Images/home-210.png"OnHoverPic="'../Images/channel-210.png','../Images/list-210.png','../Images/detail-210.png'"isNew="1" isFree="1"> <Home Name="旅游"TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Home> <ChannelTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Channel> <NewsListTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </NewsList> <ArticleTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Article> </Suit> <Suit Name="简洁"defPic="../Images/home-205.png"OnHoverPic="'../Images/channel-205.png','../Images/list-205.png','../Images/detail-205.png'"isNew="1" isFree="1"> <Home Name="简洁"TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Home> <ChannelTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Channel> <NewsListTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </NewsList> <ArticleTemplateName="Template0" ScriptName="Js0"StyleName="Css0" > <Nav TemplateName="Template0" ScriptName="Js0"StyleName="Css0" > </Nav> </Article> </Suit> </SiteConfig></span></span> 读取XML文件: //该路径下的文件 string strXmlPath="F:公司学习例子DefaultStyle.xml" XDocument defaultDoc = new XDocument(); defaultDoc = XDocument.Load(strXmlPath);
二、创建xml文件: XDocument newSuitXml=new XDocument(); XElement rootEle = newXElement("SiteConfig"); //把根节点添加到新的xml文件中中 newSuitXml.Add(rootEle); //把文件123.xml保存到指定路径 newSuitXml.Save("F:公司学习例子123.xml");
产生的文件效果图, <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;"><?xmlversion="1.0" encoding="utf-8"?> <SiteConfig> </SiteConfig></span></span> 三、复制某些节点到xml文件中: 业务需求:
读取DefaultStyle.Xml中根节点下的Name="简洁"的Suit配置节信息到123.xml文件中
1)//读取DefaultStyle.Xml文件,创建方式同上。
2)找到suit下的子元素,添加到123.xml文件上。 //读取DefaultStyle.Xml中根节点下的Name="简洁"的Suit配置节信息,复制信息不包括Suit节点 //获取根节点 XElement RootEle = defaultDoc.Root; //找到Name="简洁"的Suit节点 //获取根元素下的所有节点 List<XElement>selecedtElements=RootEle.Elements().ToList(); //Default.xml找到选中套装的配置节点 XElement SelectEle = null;
//找到Name="简洁"的Suit节点 for (int i = 0; i <suitElements.length; i++) { if (suitElements[i].Attribute("Name").Value=="简约") { SelectEle =suitElements[i]; } }
//找到该元素下的所有集合,然后需要添加到123.xml的根目录下 List<XElement> newElementEleColl =SelectEle.Elements().ToList();
3)加载123.xml文件 stringnewXmlPath="F:公司学习例子123.xml" XDocumentnewDoc =new XDocument(); newDoc = XDocument.Load(strXmlPath);
//将选取的元素集添加到123.xml文件的根节点下 StringrootEle=newDoc.Root;
//统计新元素的个数,进行添加到新文件的操作。 int newElementEleCollCount= newElementEleColl.Count; //将选取的元素,添加到新的文档中 for(int j = 0; j<newElementEleCollCount; j++){ rootEle.Add(newElementEleColl[j]); }
123.xml文件的新内容展示: <span style="font-family:Microsoft YaHei;"><span style="font-size:18px;"><?xmlversion="1.0" encoding="utf-8"?> <SiteConfig> <Home Name="简洁"TemplateName="Template0" ScriptName="Js0"StyleName="Css0"> <Nav TemplateName="Template1"ScriptName="Js0" StyleName="Css0"></Nav> </Home> <ChannelTemplateName="Template0" ScriptName="Js0"StyleName="Css0"> <Nav TemplateName="Template1"ScriptName="Js0" StyleName="Css0"></Nav> </Channel> <NewsListTemplateName="Template0" ScriptName="Js0"StyleName="Css0"> <Nav TemplateName="Template1"ScriptName="Js0" StyleName="Css0"></Nav> </NewsList> <ArticleTemplateName="Template0" ScriptName="Js0"StyleName="Css0"> <Nav TemplateName="Template1"ScriptName="Js0" StyleName="Css0"></Nav> </Article> </SiteConfig></span></span> 四、总结
这里用到的是XDocument对象,它是.NET3.5为Linq for XML准备的轻量级Documnet对象,在功能上XmlDocument基本差不多,但是此种方式配合Linq使用,更方便简单而已。感觉很类似于sql到linq的操作。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |