C#创建XML节点

 1         public static bool CreateXML()
 2         {
 3             XMLMapMode xmlmodel = new XMLMapMode();
 4             Dictionary<string, object> dic = new Dictionary<string, object>();
 5             xmlmodel.Code = "节点的Code属性";
 6             xmlmodel.Content = "节点的内容";
 7             xmlmodel.SQLMapFile = "文件目录";
 8             dic.Add("Description", "描述属性");
 9             dic.Add("CreateCode", "创建人");
10             dic.Add("UpdateTime", "创建时间");
11             xmlmodel.Parameters = dic;
12             XMLBase.UpdateXML(xmlmodel);
13             xmlModel.xpath = "/Root";
14             bool state = CreateCDATA(xmlmodel);
15             return state;
16         }
调用创建的方法
 1 public static bool CreateXmlNodeByXModel(XMLMapMode XmlModel)
 2         {
 3             bool isSuccess = false;
 4             XmlDocument xmlDoc = new XmlDocument();
 5             try
 6             {
 7                 xmlDoc.Load(XmlModel.SQLMapFile); //加载XML文档
 8                 XmlNode xmlNode = xmlDoc.SelectSingleNode(XmlModel.xpath);
 9                 if (xmlNode != null)
10                 {
11                     //存不存在此节点都创建
12                     XmlElement subElement = xmlDoc.CreateElement("SQL");
13                     subElement.InnerXml = XmlModel.Content;
14 
15                     #region 追加属性
16                     ////////追加code属性/////////////////
17                     if (!string.IsNullOrEmpty(XmlModel.Code))
18                     {
19                         XmlAttribute xmlAttribute = xmlDoc.CreateAttribute("Code");
20                         xmlAttribute.Value = XmlModel.Code;
21                         subElement.Attributes.Append(xmlAttribute);
22                     }
23                     ////////////////////////
24 
25                     //如果属性和值参数都不为空则在此新节点上新增其他副属性
26                     if (XmlModel.Parameters.Count > 0)
27                     {
28                         foreach (var item in XmlModel.Parameters)
29                         {
30                             if (!string.IsNullOrEmpty(item.Key) && !string.IsNullOrEmpty(item.Value.ToString()))
31                             {
32                                 XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(item.Key);
33                                 xmlAttribute.Value = item.Value.ToString();
34                                 subElement.Attributes.Append(xmlAttribute);
35                             }
36                         }
37                     }
38                     #endregion
39 
40                     xmlNode.AppendChild(subElement);
41                 }
42                 xmlDoc.Save(XmlModel.SQLMapFile); //保存到XML文档
43                 isSuccess = true;
44             }
45             catch (Exception ex)
46             {
47                 throw ex; //这里可以定义你自己的异常处理
48             }
49             return isSuccess;
50         }
创建XML节点(普通)
 1 private static bool CreateCDATA(XMLMapMode XmlModel)
 2         {
 3             bool isSuccess = false;
 4             XmlDocument xmlDoc = new XmlDocument();
 5             try
 6             {
 7                 xmlDoc.Load(XmlModel.SQLMapFile); //加载XML文档
 8                 XmlNode xmlNode = xmlDoc.SelectSingleNode(XmlModel.xpath);
 9                 if (xmlNode != null)
10                 {
11                     #region 创建节点
12                     //遍历xpath节点下的所有子节点
13                     if (!IsExistNode(XmlModel.Code, xmlNode))
14                     {
15                         //存不存在此节点都创建
16                         XmlElement subElement = xmlDoc.CreateElement("SQL");
17                         XmlCDataSection cdata = xmlDoc.CreateCDataSection(XmlModel.Content);
18                         subElement.AppendChild(cdata);
19                         //subElement.InnerXml = XmlModel.Content;
20 
21                         #region 追加属性
22                         ////////追加code属性/////////////////
23                         if (!string.IsNullOrEmpty(XmlModel.Code))
24                         {
25                             XmlAttribute xmlAttribute = xmlDoc.CreateAttribute("Code");
26                             xmlAttribute.Value = XmlModel.Code;
27                             subElement.Attributes.Append(xmlAttribute);
28                         }
29                         ////////////////////////
30 
31                         //如果属性和值参数都不为空则在此新节点上新增其他副属性
32                         if (XmlModel.Parameters !=null)
33                         {
34                             foreach (var item in XmlModel.Parameters)
35                             {
36                                 if (!string.IsNullOrEmpty(item.Key) && !string.IsNullOrEmpty(item.Value.ToString()))
37                                 {
38                                     XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(item.Key);
39                                     xmlAttribute.Value = item.Value.ToString();
40                                     subElement.Attributes.Append(xmlAttribute);
41                                 }
42                             }
43                         }
44                         #endregion
45 
46                         xmlNode.AppendChild(subElement);
47 
48                         xmlDoc.Save(XmlModel.SQLMapFile); //保存到XML文档
49                         isSuccess = true;
50                     }
51                     else
52                     {
53                         isSuccess= false;
54                     }
55                     #endregion
56                 }
57             }
58             catch (Exception ex)
59             {
60                 throw ex; //这里可以定义你自己的异常处理
61             }
62             return isSuccess;
63         }
创建XML节点(CDATA)
 1 private static bool UpdateXmlNodeByXModel(XMLMapMode xmlModel)
 2         {
 3             bool isSuccess = false;
 4             //bool isExistsNode = false;//标识节点是否存在
 5             XmlDocument xmlDoc = new XmlDocument();
 6             try
 7             {
 8                 xmlDoc.Load(xmlModel.SQLMapFile); //加载XML文档
 9                 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlModel.xpath);
10                 if (xmlNode != null)
11                 {
12                     XmlElement subElement = xmlDoc.CreateElement("SQL");
13                     XmlCDataSection cdata = xmlDoc.CreateCDataSection(xmlModel.Content);
14                     subElement.AppendChild(cdata);
15 
16                     #region 追加属性
17                     ////////追加code属性/////////////////
18                     if (!string.IsNullOrEmpty(xmlModel.Code))
19                     {
20                         XmlAttribute xmlAttribute = xmlDoc.CreateAttribute("Code");
21                         xmlAttribute.Value = xmlModel.Code;
22                         subElement.Attributes.Append(xmlAttribute);
23                     }
24                     ////////////////////////
25 
26                     //如果属性和值参数都不为空则在此新节点上新增其他副属性
27                     if (xmlModel.Parameters.Count !=null)
28                     {
29                         foreach (var item in xmlModel.Parameters)
30                         {
31                             if (!string.IsNullOrEmpty(item.Key) && !string.IsNullOrEmpty(item.Value.ToString()))
32                             {
33                                 XmlAttribute xmlAttribute = xmlDoc.CreateAttribute(item.Key);
34                                 xmlAttribute.Value = item.Value.ToString();
35                                 subElement.Attributes.Append(xmlAttribute);
36                             }
37                         }
38                     }
39                     #endregion
40                     //遍历xpath节点下的所有子节点
41                     foreach (XmlNode node in xmlNode.ChildNodes)
42                     {
43                         string code = XMLHelper.GetNodeAttribute("Code", node);
44                         if (xmlModel.Code.ToLower() == code.ToLower())
45                         {
46                             //存在此节点则更新
47                             xmlNode.ReplaceChild(subElement, node);
48                             //isExistsNode = true;
49                             break;
50                         }
51                     }
52                 }
53                 xmlDoc.Save(xmlModel.SQLMapFile); //保存到XML文档
54                 isSuccess = true;
55             }
56             catch (Exception ex)
57             {
58                 throw ex; //这里可以定义你自己的异常处理
59             }
60             return isSuccess;
61         }
修改XML节点
 1 public static string QueryXML(XMLMapMode xmlModel)
 2         {
 3             xmlModel.xpath = "/Root";
 4             string text = "当前节点无数据或不存在!";
 5             XmlDocument xmlDoc = new XmlDocument();
 6             try
 7             {
 8                 xmlDoc.Load(xmlModel.SQLMapFile); //加载XML文档
 9                 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlModel.xpath);
10                 if (xmlNode != null)
11                 {
12                     //遍历xpath节点下的所有子节点
13                     foreach (XmlNode node in xmlNode.ChildNodes)
14                     {
15                         string code = XMLHelper.GetNodeAttribute("Code", node);
16                         if (xmlModel.Code.ToLower() == code.ToLower())
17                         {
18                             text= node.InnerText;
19                         }
20                     }
21                 }
22             }
23             catch (Exception ex)
24             {
25                 text= ex.Message; //这里可以定义你自己的异常处理
26             }
27             return text;
28         }
查询XML节点
 1 private static bool DeleteXmlNodeByXModel(XMLMapMode xmlModel)
 2         {
 3             bool isSuccess = false;
 4             //bool isExistsNode = false;//标识节点是否存在
 5             XmlDocument xmlDoc = new XmlDocument();
 6             try
 7             {
 8                 xmlDoc.Load(xmlModel.SQLMapFile); //加载XML文档
 9                 XmlNode xmlNode = xmlDoc.SelectSingleNode(xmlModel.xpath);
10                 if (xmlNode != null)
11                 {
12                     //遍历xpath节点下的所有子节点
13                     foreach (XmlNode node in xmlNode.ChildNodes)
14                     {
15                         string code = XMLHelper.GetNodeAttribute("Code", node);
16                         if (xmlModel.Code.ToLower() == code.ToLower())
17                         {
18                             //存在此节点删除
19                             xmlNode.RemoveChild(node);
20                             //isExistsNode = true;
21                             break;
22                         }
23                     }
24                 }
25                 xmlDoc.Save(xmlModel.SQLMapFile); //保存到XML文档
26                 isSuccess = true;
27             }
28             catch (Exception ex)
29             {
30                 throw ex; //这里可以定义你自己的异常处理
31             }
32             return isSuccess;
33         }
删除XML节点
 1 public static string GetAllFile()
 2         {
 3             string json = "";
 4             try
 5             {
 6                 string path = TwiPathHelper.MapPath("文件的地址");
 7                 DirectoryInfo dir = new DirectoryInfo(path);
 8                 FileInfo[] dirs = dir.GetFiles();
 9                 if (dirs != null)
10                 {
11                     json = FilesToJson(dirs);
12                 }
13             }
14             catch (Exception ex)
15             {
16                 throw ex;
17             }
18             return json;
19         }
获取文件夹下的所有文件
 1 private static string XmlNodeListToJson(XmlNodeList xnl)
 2         {
 3             string json = "[";
 4             foreach (XmlNode node in xnl)
 5             {
 6                 string code = XMLHelper.GetNodeAttribute("Code", node);
 7                 string Description1 = XMLHelper.GetNodeAttribute("Description", node);
 8                 string Description = XMLHelper.GetNodeAttribute("Description", node);
 9                 string CreateTime = XMLHelper.GetNodeAttribute("CreateTime", node);
10                 Description = Description + "(" + code + ")";
11                 json += "{\"Code\":@" + code + "@,\"Description1\":@" + Description1 + "@,\"Description\":@" + Description + "@,\"CreateTime\":@" + CreateTime + "@},";
12                 json=json.Replace('@', '"');
13             }
14             json = json.TrimEnd(',');
15             json += "]";
16             return json;
17         }
所有节点属性转json(根据创建时的设置)

 

posted @ 2016-08-12 09:57  blackhole1  阅读(3259)  评论(0编辑  收藏  举报