生成XML文件。

来源:http://www.cnblogs.com/yangxing8jn/archive/2016/10/12/5952876.html
-Advertisement-
Play Games

之前的項目需要涉及到對XML文件的讀寫,由於之前沒怎麼接觸過這方面的知識,於是在網上查找並試驗出了具體的實現方法: 第一種方法: 1 //動態的一個節點一個節點的生成XML文件 2 public void CreateXmlFile(string aaa) 3 { 4 XmlDocument xml ...


之前的項目需要涉及到對XML文件的讀寫,由於之前沒怎麼接觸過這方面的知識,於是在網上查找並試驗出了具體的實現方法:

第一種方法:

 1 //動態的一個節點一個節點的生成XML文件
 2 public void CreateXmlFile(string aaa)
 3 {
 4 XmlDocument xmlDoc = new XmlDocument();
 5 xmlDoc.CreateDocumentType("plist", "", "", "");
 6 //創建類型聲明節點 
 7 XmlNode node = xmlDoc.CreateXmlDeclaration("1.0", "utf-8", "");
 8 xmlDoc.AppendChild(node);
 9 XmlDocumentType docType = new XmlDocumentType();
10 // node.InnerXml="<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd' >";
11 //創建根節點 
12 XmlNode root = xmlDoc.CreateElement("plist");
13 xmlDoc.AppendChild(root);
14 
15 XmlNode dict = xmlDoc.CreateNode(XmlNodeType.Element, "dict",null);
16 CreateNode(xmlDoc, dict, "key", "items");
17 
18 root.AppendChild(dict);
19 XmlNode array = xmlDoc.CreateElement("array");
20 
21 XmlNode dict1 = xmlDoc.CreateElement("dict");
22 CreateNode(xmlDoc, dict1, "key", "assets");
23 
24 XmlNode array1 = xmlDoc.CreateElement("array");
25 
26 XmlNode dict2 = xmlDoc.CreateElement("dict");
27 CreateNode(xmlDoc, dict2, "key", "kind");
28 CreateNode(xmlDoc, dict2, "string", "software-package");
29 CreateNode(xmlDoc, dict2, "key", "url");
30 //文件下載地址
31 CreateNode(xmlDoc, dict2, "string", "https://app.yuntian.net/ipa/DealerPortal_1.0.ipa");
32 array1.AppendChild(dict2);
33 XmlNode dict3 = xmlDoc.CreateElement("dict");
34 CreateNode(xmlDoc, dict3, "key", "kind");
35 CreateNode(xmlDoc, dict3, "string", "full-size-image");
36 CreateNode(xmlDoc, dict3, "key", "needs-shine");
37 XmlNode true1 = xmlDoc.CreateElement("true");
38 dict3.AppendChild(true1);
39 CreateNode(xmlDoc, dict3, "key", "url");
40 //http或者https鏈接的圖片地址,可直接使用app對應的icon(解析度沒強制要求)
41 CreateNode(xmlDoc, dict3, "string", "https://app.yuntian.net/images/ios1.png");
42 array1.AppendChild(dict3);
43 XmlNode dict4 = xmlDoc.CreateElement("dict");
44 CreateNode(xmlDoc, dict4, "key", "kind");
45 CreateNode(xmlDoc, dict4, "string", "display-image");
46 CreateNode(xmlDoc, dict4, "key", "needs-shine");
47 XmlNode true2 = xmlDoc.CreateElement("true");
48 dict4.AppendChild(true2);
49 CreateNode(xmlDoc, dict4, "key", "url");
50 //http或者https鏈接的圖片地址,可直接使用app對應的icon(解析度沒強制要求)
51 CreateNode(xmlDoc, dict4, "string", "https://app.yuntian.net/images/xlogo.png");
52 array1.AppendChild(dict4);
53 
54 
55 dict1.AppendChild(array1);
56 
57 CreateNode(xmlDoc, dict1, "key", "metadata");
58 XmlNode dict5 = xmlDoc.CreateElement("dict");
59 CreateNode(xmlDoc, dict5, "key", "bundle-identifier");
60 CreateNode(xmlDoc, dict5, "string", aaa);
61 CreateNode(xmlDoc, dict5, "string", "0.0.1");
62 CreateNode(xmlDoc, dict5, "key", "kind");
63 CreateNode(xmlDoc, dict5, "string", "software");
64 CreateNode(xmlDoc, dict5, "key", "title");
65 CreateNode(xmlDoc, dict5, "string", "經銷商門戶");
66 
67 dict1.AppendChild(dict5);
68 array.AppendChild(dict1);
69 dict.AppendChild(array);
70 
71 
72 try
73 {
74 xmlDoc.Save("F:/XML/data5.plist");
75 }
76 catch (Exception e)
77 {
78 //顯示錯誤信息 
79 Console.WriteLine(e.Message);
80 }
81 //Console.ReadLine();
82 
83 }
84 public void CreateNode(XmlDocument xmlDoc, XmlNode parentNode, string name, string value)
85 {
86 XmlNode node = xmlDoc.CreateNode(XmlNodeType.Element, name, null);
87 node.InnerText = value;
88 parentNode.AppendChild(node);
89 }
View Code

這種方法比較笨,一個個節點的創建,不靈活,並且容易出錯

 

第二種方法:

        //直接根據XML文件的內容生成XML文件
//        public void createXmlLode()
//        {
//            XmlDocument xmldoc = new XmlDocument(); //創建空的XML文檔 
//            xmldoc.LoadXml("<?xml version='1.0' encoding='UTF-8'?>" +
//"<!DOCTYPE plist PUBLIC '-//Apple//DTD PLIST 1.0//EN' 'http://www.apple.com/DTDs/PropertyList-1.0.dtd' >" +
//"<plist version='1.0'>" +
//  "<dict>" +
//   " <key>items</key>" +
//    "<array>" +
//     " <dict>" +
//      "  <key>assets</key>" +
//       "<array>" +
//        "  <dict>" +
//         "   <key>kind</key>" +
//          "  <string>software-package</string>" +
//           " <key>url</key>" +
//           " <string>https://app.yuntian.net/ipa/DealerPortal_1.0.ipa</string>" +
//         " </dict>" +
//         " <dict>" +
//          "  <key>kind</key>" +
//           " <string>full-size-image</string>" +
//           " <key>needs-shine</key>" +
//           " <true/>" +
//           " <key>url</key>" +
//           " <string>https://app.yuntian.net/images/ios1.png</string>" +
//          "</dict>" +
//          "<dict>" +
//         "   <key>kind</key>" +
//          "  <string>display-image</string>" +
//           " <key>needs-shine</key>" +
//           " <true/>" +
//           " <key>url</key>" +

//           " <string>https://app.yuntian.net/images/xlogo.png</string>" +
//          "</dict>" +
//        "</array>" +
//     "   <key>metadata</key>" +
//      "  <dict>" +
//       "   <key>bundle-identifier</key>" +

//        "  <string>com.ytsoft.dealerportal</string>" +
//     "     <key>bundle-version</key>" +
//       "   <string>0.0.1</string>" +
//       "   <key>kind</key>" +
//     "     <string>software</string>" +
//     "     <key>title</key>" +
//      "    <string>經銷商門戶</string>" +
//       " </dict>" +
//      "</dict>" +
//    "</array>" +
// " </dict>" +
//"</plist>");
//            xmldoc.Save("F:/XML/ppp.plist"); //保存 
//        }
  
View Code

一股腦的將所有的XML文件手寫出來,然後生成。說實話,也挺麻煩的。就找到了這兩種方法,最後發現都挺麻煩。

最後在組長的指導下,根據現有的模板自動生成Xml文件,雖然代碼寫得有點戳,但是基本自己完成,好歹算個進步吧。

 /// <summary>
        /// 根據模板動態生成XML文件
        /// </summary>
        /// <param name="DownUrl">安裝包下載地址</param>
        /// <param name="ImageUrl">圖片地址</param>
        /// <param name="SmallImageUrl">小圖標地址</param>
        /// <param name="AppName">app包名</param>
        /// <param name="version">版本號</param>
        /// <param name="title">標題</param>
        public void CreateXMLByTemplet(string DownUrl, string ImageUrl, string SmallImageUrl, String AppName, string version,string title)
        {
            try
            {
                XmlDocument doc = new XmlDocument();
                  //載入Xml文件 
                string Templeturl="http://localhost:8031/Approval.7.3.plist";
                if (File.Exists(Templeturl))
                {
                    Alert.Show("無此文件!");
                }
                doc.Load(Templeturl);  
                XmlElement rootElem = doc.DocumentElement;   //獲取根節點  
                XmlNodeList dNode = rootElem.GetElementsByTagName("dict"); //獲取dict子節點集合

                foreach (XmlNode node in dNode)
                {
                    XmlElement xe = (XmlElement)node;
                    // 得到Type和ISBN兩個屬性的屬性值
                    XmlNodeList xnl0 = xe.ChildNodes;
                    for (int i = 0; i < xnl0.Count; i++)
                    {
                        if (xnl0.Item(i).InnerText == "software-package")
                        {
                            xnl0.Item(i + 3).InnerText = DownUrl;
                        }
                        if (xnl0.Item(i).InnerText == "full-size-image")
                        {
                            xnl0.Item(i + 5).InnerText = ImageUrl;
                        }
                        if (xnl0.Item(i).InnerText == "display-image")
                        {
                            xnl0.Item(i + 5).InnerText = SmallImageUrl;
                        }
                        if (xnl0.Item(i).InnerText == "bundle-identifier")
                        {
                            xnl0.Item(i + 2).InnerText = AppName;
                        }
                        if (xnl0.Item(i).InnerText == "bundle-version")
                        {
                            xnl0.Item(i + 2).InnerText = version;
                        }
                        if (xnl0.Item(i).InnerText == "title")
                        {
                            xnl0.Item(i + 2).InnerText = title;
                        }
                    }
                }

                doc.Save("F:/XML/aaa.plist");
                Alert.Show("保存成功!");
            }
            catch (Exception ex)
            {
                Alert.Show("保存失敗!"+ex);
            }
        }

另外,需要註意的是,在XML文件中,註釋也算節點的。。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...