/// <summary> /// Generates an attribute from its XML representation. /// </summary> /// <param name="reader"></param> private static void AddDeserializedAttribute(DDAttributesCollection ac, XmlReader reader) { var name = reader.GetAttribute(DDSchema.XML_SERIALIZE_ATTRIBUTE_NAME); var t = reader.GetAttribute(DDSchema.XML_SERIALIZE_ATTRIBUTE_TYPE); if (name != null) { DDValue v = null; if (t != null) { v = DDValueSxe.Deserialize(reader); } ac.Add(name, v); } if ((name == null) || (t == null)) // reads and close empty node { if (reader.NodeType == XmlNodeType.Element) { reader.ReadStartElement(); } if (reader.NodeType == XmlNodeType.EndElement) { reader.ReadEndElement(); // need to close the opened element } } }
/// <summary> /// Serializes the specified DDAttributesCollection into its XML representation and writes to a XML writer. /// The parent node must exist, for example, use IXmlSerializable interface /// </summary> /// <param name="n">the attributes collection to serialize</param> /// <param name="writer">XML writer used to write the XML document.</param> internal static void XMLSerialize(DDAttributesCollection ac, XmlWriter writer) { if (ac == null) { return; // if attributes is null } foreach (var a in ac) { writer.WriteStartElement(DDSchema.XML_SERIALIZE_NODE_ATTRIBUTE); writer.WriteAttributeString(DDSchema.XML_SERIALIZE_ATTRIBUTE_NAME, a.Key); if (a.Value != null) { DDValueSxe.XMLSerialize(a.Value, writer); } writer.WriteEndElement(); } }
/// <summary> /// Generates an object from its XML representation. /// </summary> /// <param name="reader"></param> public virtual void ReadXml(XmlReader reader) { this.v = DDValueSxe.Deserialize(reader); }
/// <summary> /// Converts an object into its XML representation. /// </summary> /// <param name="writer"></param> public virtual void WriteXml(XmlWriter writer) { DDValueSxe.XMLSerialize(v, writer); }