/// <summary> /// 增加节点 /// </summary> /// <param name="filePath"></param> /// <param name="encoding"></param> /// <param name="rootNodes"></param> private static void AddNode(string filePath, Encoding encoding, EnowitXmlNode rootNodes) { if (rootNodes.ParentNode == null) { //加入根节点 XmlElement xmlelem = xmldoc.CreateElement("", rootNodes.Name, ""); if (rootNodes.NodeAttribute != null && rootNodes.NodeAttribute.Count > 0) { foreach (EnowitXmlNodeAttribute nodeAttribute in rootNodes.NodeAttribute)//添加节点属性 { xmlelem.SetAttribute(nodeAttribute.Name, nodeAttribute.Value); } } xmldoc.AppendChild(xmlelem); } if (rootNodes.ChildNode != null)//添加孩子节点 { foreach (EnowitXmlNode child in rootNodes.ChildNode) { string _xPath = GetXPath(child).Substring(0, GetXPath(child).LastIndexOf('/')); //获取父节点全路径 XmlNode xmlNode = xmldoc.SelectSingleNode(_xPath); //获取父节点 CreateNode(child, xmlNode); AddNode(filePath, encoding, child); } } }
/// <summary> /// 增加方法 /// </summary> /// <param name="node">EnowitXmlNode节点</param> public void Add(EnowitXmlNode node) { if (_nodes == null) { _nodes = new List <EnowitXmlNode>(); } node.ParentNode = _rootNode; _nodes.Add(node); }
/// <summary> /// 获取节点父节点路径 /// </summary> /// <param name="node">当前节点</param> /// <returns></returns> private static string GetXPath(EnowitXmlNode node) { string xPath = null; if (node.ParentNode == null || string.IsNullOrEmpty(node.ParentNode.Name)) { xPath = node.Name; } else { xPath = GetXPath(node.ParentNode) + "/" + node.Name; } return(xPath); }
/// <summary> /// 添加节点 /// </summary> /// <param name="node">要添加的节点</param> /// <param name="xmlNode">父节点</param> /// <returns></returns> private static void CreateNode(EnowitXmlNode node, XmlNode xmlNode) { XmlElement xmlelem = xmldoc.CreateElement("", node.Name, ""); if (node.NodeAttribute != null && node.NodeAttribute.Count > 0) { foreach (EnowitXmlNodeAttribute nodeAttribute in node.NodeAttribute)//添加节点属性 { xmlelem.SetAttribute(nodeAttribute.Name, nodeAttribute.Value); } } if (!string.IsNullOrEmpty(node.Value)) { XmlText xmlText = xmldoc.CreateTextNode(node.Value); xmlelem.AppendChild(xmlText); } xmlNode.AppendChild(xmlelem); }
/// <summary> /// 根据根节点的一些信息创建XML文件 /// </summary> /// <param name="filePath">文件路径全名</param> /// <param name="encoding">编码</param> /// <param name="rootNodes">根节点</param> /// <returns></returns> private static void _CreateXmlFile(string filePath, Encoding encoding, EnowitXmlNode rootNodes) { if (!File.Exists(filePath)) { string dir = Path.GetDirectoryName(filePath); if (!Directory.Exists(dir)) { Directory.CreateDirectory(dir); } xmldoc = new XmlDocument(); xmldoc.AppendChild(xmldoc.CreateXmlDeclaration("1.0", encoding.BodyName, null)); AddNode(filePath, encoding, rootNodes); try { xmldoc.Save(filePath); } catch { throw; } } }
/// <summary> /// 节点集合 /// </summary> /// <param name="node">节点</param> public EnowitXmlNodes(EnowitXmlNode node) { _rootNode = node; }
/// <summary> /// 根据根节点的一些信息创建XML文件 /// </summary> /// <param name="filePath">文件路径全名</param> /// <param name="encoding">编码</param> /// <param name="rootNodes">根节点</param> /// <returns></returns> public static void CreateXmlFile(string filePath, Encoding encoding, EnowitXmlNode rootNodes) { _CreateXmlFile(filePath, encoding, rootNodes); }
/// <summary> /// 构造函数 /// </summary> /// <param name="name">节点名称</param> /// <param name="value">节点值</param> /// <param name="parent">父节点</param> public EnowitXmlNode(string name, string value, EnowitXmlNode parent) : base(name, value) { this.ParentNode = parent; }