Esempio n. 1
0
        /// <summary> 将制定类型序列化为节点 </summary>
        public XmlParam ToXMLNode <T>(T v)
        {
            List <AttributeParameter> atts = new List <AttributeParameter>();

            XmlParam node = new XmlParam();

            Type t = typeof(T);

            node.Name = t.Name;

            node.InnerText = t.Name;

            var ps = t.GetProperties();

            foreach (var item in ps)
            {
                AttributeParameter a = new AttributeParameter();
                a.Name = item.Name;

                // HTodo  :目前只支持简单类型
                a.Value = item.GetValue(v).ToString();
                atts.Add(a);
            }

            node.Attributes = atts.ToArray();

            return(node);
        }
Esempio n. 2
0
        /// <summary> 修改节点的内容 </summary>
        /// <param name="index">节点索引</param>
        /// <param name="xmlParameter">XML参数对象</param>
        public void UpdateNode(int index, XmlParam xmlParameter)
        {
            XmlDocument xDoc = GetXmlDom();
            XmlNodeList nlst = xDoc.DocumentElement.ChildNodes;

            if (nlst.Count <= index)
            {
                return;
            }
            if (nlst[index].Name == xmlParameter.Name)
            {
                UpdateNode(nlst[index], xmlParameter);
            }
            else
            {
                foreach (XmlNode xn in nlst[index])
                {
                    XmlNode xnd = GetNode(xn, xmlParameter.Name);
                    if (xnd != null)
                    {
                        UpdateNode(xnd, xmlParameter);
                    }
                }
            }
            xDoc.Save(_xPath);
        }
Esempio n. 3
0
 /// <summary> 修改节点的内容 </summary>
 /// <param name="node">节点</param>
 /// <param name="xmlParameter">XML参数对象</param>
 private void UpdateNode(XmlNode node, XmlParam xmlParameter)
 {
     node.InnerText = xmlParameter.InnerText;
     for (int i = 0; i < xmlParameter.Attributes.Length; i++)
     {
         for (int j = 0; j < node.Attributes.Count; j++)
         {
             if (node.Attributes[j].Name == xmlParameter.Attributes[i].Name)
             {
                 node.Attributes[j].Value = xmlParameter.Attributes[i].Value;
             }
         }
     }
 }
Esempio n. 4
0
        /// <summary> 修改属性值 </summary>
        /// <param name="xmlParameter">XML参数</param>
        /// <param name="attributeValue">新属性值</param>
        public void SetAttribute(XmlParam xmlParameter, string attributeName, string attributeValue)
        {
            XmlDocument xDoc = GetXmlDom();
            XmlNodeList nlst = xDoc.DocumentElement.ChildNodes;

            foreach (XmlNode xns in nlst)  // 遍历所有子节点
            {
                if (xns.Name == xmlParameter.Name && xns.InnerText == xmlParameter.InnerText)
                {
                    ((XmlElement)xns).SetAttribute(attributeName, attributeValue);
                    break;
                }
                XmlNode tmp = GetNode(xns, xmlParameter);
                if (tmp != null)
                {
                    ((XmlElement)tmp).SetAttribute(attributeName, attributeValue);
                    break;
                }
            }
            xDoc.Save(_xPath);
        }
Esempio n. 5
0
        /// <summary> 修改节点的内容 </summary>
        /// <param name="xmlParameter">XmlParameter对象</param>
        /// <param name="innerText">修改后的内容</param>
        /// <param name="attributeParameters">需要修改的属性</param>
        public void UpdateNode(XmlParam xmlParameter, string innerText, params AttributeParameter[] attributeParameters)
        {
            XmlDocument xDoc = GetXmlDom();
            XmlNodeList nlst = xDoc.DocumentElement.ChildNodes;

            foreach (XmlNode xns in nlst)  // 遍历所有子节点
            {
                if (xns.Name == xmlParameter.Name && xns.InnerText == xmlParameter.InnerText)
                {
                    UpdateNode(xns, innerText, attributeParameters);
                    break;
                }
                XmlNode tmp = GetNode(xns, xmlParameter);
                if (tmp != null)
                {
                    UpdateNode(tmp, innerText, attributeParameters);
                    break;
                }
            }
            xDoc.Save(_xPath);
        }
Esempio n. 6
0
 /// <summary> 获取指定节点名称的节点对象 </summary>
 /// <param name="node">节点对象</param>
 /// <param name="xmlParameter">XML参数</param>
 public XmlNode GetNode(XmlNode node, XmlParam xmlParameter)
 {
     return(GetNode(node, xmlParameter.Name, node.InnerText));
 }