static XmlNode GetNodeFromObject(object value, XmlDocument dataFile) { if (_log.IsDebugEnabled) { _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); } XmlNode node = null; XmlComment cm = null; IXmlStorage storage = value as IXmlStorage; if (value != null) { foreach (Attribute attrib in value.GetType().GetCustomAttributes(true)) { XmlConversionRootAttribute rootAttrib = attrib as XmlConversionRootAttribute; if (rootAttrib != null) { node = dataFile.CreateElement(rootAttrib.RootNodeName); } XmlCommentAttribute comment = attrib as XmlCommentAttribute; if (comment != null) { cm = dataFile.CreateComment(comment.Comment); } } if (node != null && cm != null) { node.AppendChild(cm); } if (node != null) { AddStorageElements(node, storage, dataFile); } } if (_log.IsDebugEnabled) { _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString()); } return(node); }
static void BuildXmlDocument(XmlDocument doc, string name, object value, XmlNode currentNode) { if (_log.IsDebugEnabled) { _log.DebugFormat("Starting {0}", MethodBase.GetCurrentMethod().ToString()); } foreach (System.Attribute attr in value.GetType().GetCustomAttributes(true)) { XmlCommentAttribute nodeAttribute = attr as XmlCommentAttribute; if (nodeAttribute != null && !string.IsNullOrEmpty(nodeAttribute.Comment)) { XmlComment cm = doc.CreateComment(nodeAttribute.Comment); currentNode.AppendChild(cm); } } //now need to identify value type. If is value type, then create attribute to add to current node. if (value.GetType() == typeof(int) || value.GetType() == typeof(decimal) || value.GetType() == typeof(string) || value.GetType() == typeof(double) || value.GetType() == typeof(short) || value.GetType() == typeof(byte) || value.GetType() == typeof(long) || value.GetType() == typeof(float) || value.GetType() == typeof(bool)) { XmlAttribute attrib = doc.CreateAttribute(name); if (value != null) { string val = value.ToString(); if (!string.IsNullOrEmpty(val)) { attrib.Value = value.ToString(); currentNode.Attributes.Append(attrib); } } } else if (value.GetType().ImplementsIList()) { IList itemList = (IList)value; foreach (object val in itemList) { BuildXmlDocument(doc, name, val, currentNode); } } else { XmlElement newElem = doc.CreateElement(name); //if (ConvertObjectToXml(value, doc, newElem)) //{ ConvertObjectToXml(value, doc, newElem); currentNode.AppendChild(newElem); //} } if (_log.IsDebugEnabled) { _log.DebugFormat("Ending {0}", MethodBase.GetCurrentMethod().ToString()); } }