/// <summary> /// Writes the collection to a stream using the NodeSet schema. /// </summary> public void SaveAsNodeSet(ISystemContext context, Stream ostrm) { NodeTable nodeTable = new NodeTable(context.NamespaceUris, context.ServerUris, null); for (int ii = 0; ii < this.Count; ii++) { this[ii].Export(context, nodeTable); } NodeSet nodeSet = new NodeSet(); foreach (ILocalNode node in nodeTable) { nodeSet.Add(node, nodeTable.NamespaceUris, nodeTable.ServerUris); } XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = true; using (XmlWriter writer = XmlWriter.Create(ostrm, settings)) { DataContractSerializer serializer = new DataContractSerializer(typeof(NodeSet)); serializer.WriteObject(writer, nodeSet); } }
/// <summary> /// Writes the schema information to a static XML export file. /// </summary> public void SaveAsXml(ISystemContext context, Stream ostrm, bool keepStreamOpen) { XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = !keepStreamOpen; ServiceMessageContext messageContext = new ServiceMessageContext { NamespaceUris = context.NamespaceUris, ServerUris = context.ServerUris, Factory = context.EncodeableFactory }; using (XmlWriter writer = XmlWriter.Create(ostrm, settings)) { XmlQualifiedName root = new XmlQualifiedName("ListOfNodeState", Namespaces.OpcUaXsd); XmlEncoder encoder = new XmlEncoder(root, writer, messageContext); encoder.SaveStringTable("NamespaceUris", "NamespaceUri", context.NamespaceUris); encoder.SaveStringTable("ServerUris", "ServerUri", context.ServerUris); for (int ii = 0; ii < this.Count; ii++) { NodeState state = this[ii]; if (state != null) { state.SaveAsXml(context, encoder); } } encoder.Close(); } }
/// <summary> /// Saves the configuration file. /// </summary> /// <param name="filePath">The file path.</param> /// <remarks>Calls GetType() on the current instance and passes that to the DataContractSerializer.</remarks> public void SaveToFile(string filePath) { XmlWriterSettings settings = Utils.DefaultXmlWriterSettings(); settings.CloseOutput = true; using (Stream ostrm = File.Open(filePath, FileMode.Create, FileAccess.ReadWrite)) using (XmlWriter writer = XmlDictionaryWriter.Create(ostrm, settings)) { DataContractSerializer serializer = new DataContractSerializer(GetType()); serializer.WriteObject(writer, this); } }
/// <summary> /// Write a nodeset to a stream. /// </summary> /// <param name="istrm">The input stream.</param> public void Write(Stream istrm) { var writer = XmlWriter.Create(istrm, Utils.DefaultXmlWriterSettings()); try { DataContractSerializer serializer = new DataContractSerializer(typeof(NodeSet)); serializer.WriteObject(writer, this); } finally { writer.Flush(); writer.Dispose(); } }