你的位置:首页 > ASP.net教程

[ASP.net教程]C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)


最近工作中遇到一个问题,要求创建一个

需求:创建

初始化的文档节点如下:

 1 <??> 2 <xxxversion="1.0" name="aaa"> 3   <CreationInfo> 4     <CreatedBy>CreateUser</CreatedBy> 5     <CreatedTime>2015/10/1 14:03:48</CreatedTime> 6     <SavedTime>2015/10/1 14:03:48</SavedTime> 7   </CreationInfo> 8   <a/> 9   <b/>10   <c/>11 </xxx>

View Code

首先第一个问题:后缀名为.xwsp,打开后显示的

当时这个问题想复杂了,因为要进行二进制转换之类的,网上找了老半天没找到,最后自己试了一下,简单的要死,只能说自己笨

解决方法:

只要保存

 

第二个问题:添加节点的时候尤其是添加<CreatedBy><CreatedTime><SavedTime>这三个节点的时候老是添加不进去

当时写的代码如下:

 1 private static void CreateXwspFile(string fileName, string path) 2     { 3       new  4       //创建类型声明节点  5       "1.0", "utf-8", null); 6        7  8       //创建根节点  9       "xxx");10       //给节点属性赋值11       xeRoot.SetAttribute("version", "1.0");12       xeRoot.SetAttribute("name", fileName);13       14 15       //创建并添加<CreationInfo></CreationInfo>节点16       xeRoot = "CreationInfo");17       "xxx");18       if (xnXwsp != null)19       {20         xnXwsp.AppendChild(xeRoot);21       }22 23       //创建并添加<CreatedBy></CreatedBy>节点24       xeRoot = "CreatedBy");25       xnXwsp = "CreationInfo");26       if (xnXwsp != null)27       {28         xnXwsp.AppendChild(xeRoot);29       }30 31       //创建并添加<CreatedTime></CreatedTime>节点32       xeRoot = "CreatedTime");33       xnXwsp = "CreationInfo");34       if (xnXwsp != null)35       {36         xnXwsp.AppendChild(xeRoot);37       }38 39       //创建并添加<SavedTime></SavedTime>节点40       xeRoot = "SavedTime");41       xnXwsp = "CreationInfo");42       if (xnXwsp != null)43       {44         xnXwsp.AppendChild(xeRoot);45       }46 47       //创建并添加<a></a>节点48       xeRoot = "a");49       xnXwsp = "xxx");50       if (xnXwsp != null)51       {52         xnXwsp.AppendChild(xeRoot);53       }54       //创建并添加<b></b>节点55       xeRoot = "b");56       xnXwsp = "xxx");57       if (xnXwsp != null)58       {59         xnXwsp.AppendChild(xeRoot);60       }61       //创建并添加<c></c>节点62       xeRoot = "c");63       xnXwsp = "xxx");64       if (xnXwsp != null)65       {66         xnXwsp.AppendChild(xeRoot);67       }68       //保存69       try70       {71         ".xwsp");72       }73       catch (Exception ep)74       {75         Console.WriteLine(ep.Message);76       }77     }

View Code

结果如下:

1 <??>2 <xxx version="1.0" name="workspace1">3  <CreationInfo />4  <a />5  <b />6  <c />7 </xxx>

View Code

子节点<CreatedBy><CreatedTime><SavedTime>死活出不来,打断点<CreationInfo>节点先添加进去了,但是xnXwsp =

这种得不到正确写法的思路是:先添加父节点<CreationInfo>再添加子节点<CreatedBy><CreatedTime><SavedTime>

网上找到另一种写法,思路是:先创建子节点<CreatedBy><CreatedTime><SavedTime>,再创建父节点<CreationInfo>,然后把子节点添加到该父节点下面,再查找根节点<xxx>,最后把父节点<CreationInfo>添加到根节点末尾就OK了,代码如下:

 1 private static void CreateXwspFile(string fileName, string path) 2     { 3       new  4       //创建类型声明节点  5       "1.0", "utf-8", null); 6        7  8       //创建根节点  9       "xxx");10       //给节点属性赋值11       xeRoot.SetAttribute("version", "1.0");12       xeRoot.SetAttribute("name", fileName);13       14 15       ////创建并添加<CreationInfo></CreationInfo>节点16       ////创建并添加<CreatedBy></CreatedBy>节点17       ////创建并添加<CreatedTime></CreatedTime>节点18       ////创建并添加<SavedTime></SavedTime>节点19       "CreationInfo");20       "CreatedBy");21       xeCreatedBy.InnerText = "Tektronix Course Editor";22       "CreatedTime");23       xeCreatedTime.InnerText = DateTime.Now.ToString();24       "SavedTime");25       xeSavedTime.InnerText = DateTime.Now.ToString();26       xeCreationInfo.AppendChild(xeCreatedBy);27       xeCreationInfo.AppendChild(xeCreatedTime);28       xeCreationInfo.AppendChild(xeSavedTime);29       "xxx");30       if (xnXwsp != null)31       {32         xnXwsp.AppendChild(xeCreationInfo);33       }34 35       //创建并添加<a></a>节点36       xeRoot = "a");37       if (xnXwsp != null)38       {39         xnXwsp.AppendChild(xeRoot);40       }41       //创建并添加<b></b>节点42       xeRoot = "b");43       if (xnXwsp != null)44       {45         xnXwsp.AppendChild(xeRoot);46       }47       //创建并添加<c></c>节点48       xeRoot = "c");49       if (xnXwsp != null)50       {51         xnXwsp.AppendChild(xeRoot);52       }53       //保存54       try55       {56         ".xwsp");57       }58       catch (Exception ep)59       {60         Console.WriteLine(ep.Message);61       }62     }

View Code

结果如下:

 1 <??> 2 <xxx version="1.0" name="workspace1"> 3  <CreationInfo> 4   <CreatedBy>Tektronix Course Editor</CreatedBy> 5   <CreatedTime>2015/10/1 14:43:56</CreatedTime> 6   <SavedTime>2015/10/1 14:43:57</SavedTime> 7  </CreationInfo> 8  <a /> 9  <b />10  <c />11 </xxx>

View Code

 

现在还有一个问题没有解决:

要在<?