最近工作中遇到一个问题,要求创建一个
需求:创建
初始化的文档节点如下:
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
现在还有一个问题没有解决:
要在<?
原标题:C#操作XML学习之创建XML文件的同时新建根节点和子节点(多级子节点)
关键词:C#