生成XML文件。
2018-06-22 07:38:00来源:未知 阅读 ()
之前的项目需要涉及到对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 }
这种方法比较笨,一个个节点的创建,不灵活,并且容易出错
第二种方法:
//直接根据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"); //保存 // }
一股脑的将所有的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文件中,注释也算节点的。。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- asp.net源程序编译为dll文件并调用的实现过程 2020-03-29
- .NET随机数函数的生成方法 2020-03-18
- 如何创建和读取xml文件 2020-03-10
- asp.net网页里面为什么找不到CS文件 2020-03-09
- ASP.NET实现大文件上传功能 2020-03-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash