麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

C#操作XML學習之創建XML文件的同時新建根節點和子節點(多級子節點)

2019-11-14 13:56:17
字體:
來源:轉載
供稿:網友

最近工作中遇到一個問題,要求創建一個xml文件,在創建的時候要初始化該XML文檔,同時該文檔打開后是XML形式,但是后綴名不是。在網上找了好些資料沒找到,只能自己試著弄了一下,沒想到成功了,把它記下來作為自己的學習筆記。

需求:創建XML文件,后綴名為.xwsp

初始化的文檔節點如下:

 1 <?xml version="1.0" encoding="UTF-8"?> 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,打開后顯示的XML文本

當時這個問題想復雜了,因為要進行二進制轉換之類的,網上找了老半天沒找到,最后自己試了一下,簡單的要死,只能說自己笨

解決方法:xmlDoc.Save("a.xwsp");

只要保存xml文件的時候改了后綴名即可,我也是醉了

 

第二個問題:添加節點的時候尤其是添加<CreatedBy><CreatedTime><SavedTime>這三個節點的時候老是添加不進去

當時寫的代碼如下:

 1 PRivate static void CreateXwspFile(string fileName, string path) 2         { 3             XmlDocument xmlDoc = new XmlDocument(); 4             //創建類型聲明節點   5             XmlDeclaration xdDec = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", null); 6             xmlDoc.AppendChild(xdDec); 7  8             //創建根節點   9             XmlElement xeRoot = xmlDoc.CreateElement("xxx");10             //給節點屬性賦值11             xeRoot.SetAttribute("version", "1.0");12             xeRoot.SetAttribute("name", fileName);13             xmlDoc.AppendChild(xeRoot);14 15             //創建并添加<CreationInfo></CreationInfo>節點16             xeRoot = xmlDoc.CreateElement("CreationInfo");17             XmlNode xnXwsp = xmlDoc.SelectSingleNode("xxx");18             if (xnXwsp != null)19             {20                 xnXwsp.AppendChild(xeRoot);21             }22 23             //創建并添加<CreatedBy></CreatedBy>節點24             xeRoot = xmlDoc.CreateElement("CreatedBy");25             xnXwsp = xmlDoc.SelectSingleNode("CreationInfo");26             if (xnXwsp != null)27             {28                 xnXwsp.AppendChild(xeRoot);29             }30 31             //創建并添加<CreatedTime></CreatedTime>節點32             xeRoot = xmlDoc.CreateElement("CreatedTime");33             xnXwsp = xmlDoc.SelectSingleNode("CreationInfo");34             if (xnXwsp != null)35             {36                 xnXwsp.AppendChild(xeRoot);37             }38 39             //創建并添加<SavedTime></SavedTime>節點40             xeRoot = xmlDoc.CreateElement("SavedTime");41             xnXwsp = xmlDoc.SelectSingleNode("CreationInfo");42             if (xnXwsp != null)43             {44                 xnXwsp.AppendChild(xeRoot);45             }46 47             //創建并添加<a></a>節點48             xeRoot = xmlDoc.CreateElement("a");49             xnXwsp = xmlDoc.SelectSingleNode("xxx");50             if (xnXwsp != null)51             {52                 xnXwsp.AppendChild(xeRoot);53             }54             //創建并添加<b></b>節點55             xeRoot = xmlDoc.CreateElement("b");56             xnXwsp = xmlDoc.SelectSingleNode("xxx");57             if (xnXwsp != null)58             {59                 xnXwsp.AppendChild(xeRoot);60             }61             //創建并添加<c></c>節點62             xeRoot = xmlDoc.CreateElement("c");63             xnXwsp = xmlDoc.SelectSingleNode("xxx");64             if (xnXwsp != null)65             {66                 xnXwsp.AppendChild(xeRoot);67             }68             //保存XML文檔69             try70             {71                 xmlDoc.Save(path + fileName + ".xwsp");72             }73             catch (Exception ep)74             {75                 Console.WriteLine(ep.Message);76             }77         }
View Code

結果如下:

1 <?xml version="1.0" encoding="utf-8"?>2 <xxx version="1.0" name="workspace1">3   <CreationInfo />4   <a />5   <b />6   <c />7 </xxx>
View Code

子節點<CreatedBy><CreatedTime><SavedTime>死活出不來,打斷點<CreationInfo>節點先添加進去了,但是xnXwsp = xmlDoc.SelectSingleNode("CreationInfo");這一句的結果死活為null,想不通,現在都沒想通,后來換了一種寫法就OK了

這種得不到正確寫法的思路是:先添加父節點<CreationInfo>再添加子節點<CreatedBy><CreatedTime><SavedTime>

網上找到另一種寫法,思路是:先創建子節點<CreatedBy><CreatedTime><SavedTime>,再創建父節點<CreationInfo>,然后把子節點添加到該父節點下面,再查找根節點<xxx>,最后把父節點<CreationInfo>添加到根節點末尾就OK了,代碼如下:

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

結果如下:

 1 <?xml version="1.0" encoding="utf-8"?> 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

 

現在還有一個問題沒有解決:

要在<?xml version="1.0" encoding="utf-8"?>節點的后面插入<!DOCTYPE xwsp>這個節點,不曉得該怎么做,而且后面那個xwsp是可以改變的,意思就是可以自己定義,比如說我可以把它改為aaa之類的,這個暫時還沒找到解決方法


上一篇:C#預定義類型

下一篇:高斯算法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产成人小视频在线观看 | 精品一区二区久久久久久按摩 | 欧美性videofree精品 | 成人精品免费在线观看 | 在线观看一二区 | 午夜噜噜噜 | 国产精品1区 | 视频二区国产 | 小情侣嗯啊哦视频www | 日韩av片网站 | 久久免费视频5 | 久成人| 毛片在线视频免费观看 | 精品在线视频播放 | 成人午夜一区二区 | 在线亚洲欧美 | 99麻豆久久久国产精品免费 | 沉沦的校花奴性郑依婷c到失禁 | 日韩黄站 | 黄色免费不卡视频 | 欧美一级三级在线观看 | www.99re1.com | 日韩精品无码一区二区三区 | 欧美1—12sexvideos | 国产高潮国产高潮久久久91 | 一区二区三区在线观看av | 天天看天天摸天天操 | gogo全球大胆高清人露出91 | 久草最新网址 | 真人一级毛片免费 | 全网免费毛片 | 国产jjizz一区二区三区视频 | 国产免费一区二区三区视频 | 国产精品三级a三级三级午夜 | 日本高清在线免费 | 国产精品色在线网站 | 成人在线视频在线观看 | 成人毛片在线 | 欧美性生活视频免费 | 欧美3p激情一区二区三区猛视频 | 亚洲自拍第二页 |