Example #1
0
        /// <summary>
        /// Serializes the value using XML and stores it in the extension object.
        /// </summary>
        public ExtensionObject(ExpandedNodeId typeId, object value)
        {
            TypeId = typeId;

            StringBuilder buffer = new StringBuilder();

            using (XmlWriter writer = XmlWriter.Create(buffer))
            {
                DataContractSerializer serializer = new DataContractSerializer(value.GetType());
                serializer.WriteObject(writer, value);
            }

            XmlDocument document = new XmlDocument();
            document.InnerXml = buffer.ToString();

            ExtensionObjectBody body = new ExtensionObjectBody();
            body.Nodes = new XmlNode[] { document.DocumentElement };
            Body = body;
        }
Example #2
0
        /// <summary>
        /// Serializes the value using XML and stores it in the extension object.
        /// </summary>
        public ExtensionObject(ExpandedNodeId typeId, object value)
        {
            TypeId = typeId;

            StringBuilder buffer = new StringBuilder();

            using (XmlWriter writer = XmlWriter.Create(buffer))
            {
                DataContractSerializer serializer = new DataContractSerializer(value.GetType());
                serializer.WriteObject(writer, value);
            }

            XmlDocument document = new XmlDocument();

            document.InnerXml = buffer.ToString();

            ExtensionObjectBody body = new ExtensionObjectBody();

            body.Nodes = new XmlNode[] { document.DocumentElement };
            Body       = body;
        }
Example #3
0
        /// <summary>
        /// Parses an XML element and returns the value contained in it.
        /// </summary>
        private object ToObject(XmlElement element)
        {
            switch (element.Name)
            {
            case "Byte":
            {
                return(XmlConvert.ToByte(element.InnerText));
            }

            case "SByte":
            {
                return(XmlConvert.ToSByte(element.InnerText));
            }

            case "Int16":
            {
                return(XmlConvert.ToInt16(element.InnerText));
            }

            case "UInt16":
            {
                return(XmlConvert.ToUInt16(element.InnerText));
            }

            case "Int32":
            {
                return(XmlConvert.ToInt32(element.InnerText));
            }

            case "UInt32":
            {
                return(XmlConvert.ToUInt32(element.InnerText));
            }

            case "Int64":
            {
                return(XmlConvert.ToInt64(element.InnerText));
            }

            case "UInt64":
            {
                return(XmlConvert.ToUInt64(element.InnerText));
            }

            case "Single":
            {
                return(XmlConvert.ToSingle(element.InnerText));
            }

            case "Double":
            {
                return(XmlConvert.ToDouble(element.InnerText));
            }

            case "String":
            {
                return(element.InnerText);
            }

            case "DateTime":
            {
                return(XmlConvert.ToDateTime(element.InnerText, XmlDateTimeSerializationMode.Utc));
            }

            case "NodeId":
            {
                XmlNode child = element.FirstChild;

                string id = null;

                if (GetValue(element, ref child, "Identifier", out id))
                {
                    return(new NodeId(id));
                }

                break;
            }

            case "ExpandedNodeId":
            {
                XmlNode child = element.FirstChild;

                string id = null;

                if (GetValue(element, ref child, "Identifier", out id))
                {
                    return(new NodeId(id));
                }

                break;
            }

            case "QualifiedName":
            {
                QualifiedName value = new QualifiedName();

                XmlNode child = element.FirstChild;

                string namespaceIndex = null;

                if (GetValue(element, ref child, "NamespaceIndex", out namespaceIndex))
                {
                    value.NamespaceIndex = XmlConvert.ToUInt16(namespaceIndex);
                }

                string name = null;

                if (GetValue(element, ref child, "Name", out name))
                {
                    value.Name = name;
                }

                return(value);
            }

            case "LocalizedText":
            {
                LocalizedText value = new LocalizedText();

                XmlNode child = element.FirstChild;

                string locale = null;

                if (GetValue(element, ref child, "Locale", out locale))
                {
                    value.Locale = locale;
                }

                string text = null;

                if (GetValue(element, ref child, "Text", out text))
                {
                    value.Text = text;
                }

                return(value);
            }

            case "StatusCode":
            {
                StatusCode value = new StatusCode();

                XmlNode child = element.FirstChild;

                string code = null;

                if (GetValue(element, ref child, "Code", out code))
                {
                    value.Code = XmlConvert.ToUInt32(code);;
                }

                return(value);
            }

            case "ExtensionObject":
            {
                ExtensionObject value = new ExtensionObject();

                XmlNode child = element.FirstChild;

                string typeId = null;

                if (GetValue(element, ref child, "TypeId", out typeId))
                {
                    value.TypeId = new ExpandedNodeId(typeId);
                }

                for (XmlNode node = child; node != null; node = node.NextSibling)
                {
                    XmlElement element2 = child as XmlElement;

                    if (element2 != null)
                    {
                        if (element2.Name == "Body")
                        {
                            ExtensionObjectBody body = new ExtensionObjectBody();
                            body.Nodes = new XmlNode[] { GetFirstElement(element2) };
                            value.Body = body;
                        }

                        break;
                    }
                }

                return(value);
            }
            }

            return(null);
        }
Example #4
0
        /// <summary>
        /// Parses an XML element and returns the value contained in it. 
        /// </summary>
        private object ToObject(XmlElement element)
        {
            switch (element.Name)
            {
                case "Byte":
                {
                    return XmlConvert.ToByte(element.InnerText);
                }

                case "SByte":
                {
                    return XmlConvert.ToSByte(element.InnerText);
                }

                case "Int16":
                {
                    return XmlConvert.ToInt16(element.InnerText);
                }

                case "UInt16":
                {
                    return XmlConvert.ToUInt16(element.InnerText);
                }

                case "Int32":
                {
                    return XmlConvert.ToInt32(element.InnerText);
                }

                case "UInt32":
                {
                    return XmlConvert.ToUInt32(element.InnerText);
                }

                case "Int64":
                {
                    return XmlConvert.ToInt64(element.InnerText);
                }

                case "UInt64":
                {
                    return XmlConvert.ToUInt64(element.InnerText);
                }

                case "Single":
                {
                    return XmlConvert.ToSingle(element.InnerText);
                }

                case "Double":
                {
                    return XmlConvert.ToDouble(element.InnerText);
                }

                case "String":
                {
                    return element.InnerText;
                }

                case "DateTime":
                {
                    return XmlConvert.ToDateTime(element.InnerText, XmlDateTimeSerializationMode.Utc);
                }

                case "NodeId":
                {
                    XmlNode child = element.FirstChild;

                    string id = null;

                    if (GetValue(element, ref child, "Identifier", out id))
                    {
                        return new NodeId(id);
                    }

                    break;
                }

                case "ExpandedNodeId":
                {
                    XmlNode child = element.FirstChild;

                    string id = null;

                    if (GetValue(element, ref child, "Identifier", out id))
                    {
                        return new NodeId(id);
                    }

                    break;
                }

                case "QualifiedName":
                {
                    QualifiedName value = new QualifiedName();

                    XmlNode child = element.FirstChild;

                    string namespaceIndex = null;

                    if (GetValue(element, ref child, "NamespaceIndex", out namespaceIndex))
                    {
                        value.NamespaceIndex = XmlConvert.ToUInt16(namespaceIndex);
                    }

                    string name = null;

                    if (GetValue(element, ref child, "Name", out name))
                    {
                        value.Name = name;
                    }

                    return value;
                }

                case "LocalizedText":
                {
                    LocalizedText value = new LocalizedText();

                    XmlNode child = element.FirstChild;

                    string locale = null;

                    if (GetValue(element, ref child, "Locale", out locale))
                    {
                        value.Locale = locale;
                    }

                    string text = null;

                    if (GetValue(element, ref child, "Text", out text))
                    {
                        value.Text = text;
                    }

                    return value;
                }

                case "StatusCode":
                {
                    StatusCode value = new StatusCode();

                    XmlNode child = element.FirstChild;

                    string code = null;

                    if (GetValue(element, ref child, "Code", out code))
                    {
                        value.Code = XmlConvert.ToUInt32(code); ;
                    }

                    return value;
                }

                case "ExtensionObject":
                {
                    ExtensionObject value = new ExtensionObject();

                    XmlNode child = element.FirstChild;

                    string typeId = null;

                    if (GetValue(element, ref child, "TypeId", out typeId))
                    {
                        value.TypeId = new ExpandedNodeId(typeId);
                    }

                    for (XmlNode node = child; node != null; node = node.NextSibling)
                    {
                        XmlElement element2 = child as XmlElement;

                        if (element2 != null)
                        {
                            if (element2.Name == "Body")
                            {
                                ExtensionObjectBody body = new ExtensionObjectBody();
                                body.Nodes = new XmlNode[] { GetFirstElement(element2) }; 
                                value.Body = body;
                            }

                            break;
                        }
                    }

                    return value;
                }
            }

            return null;
        }