I have an array called _updatedComponents of objects that are of class NetworkComponent. I have to serialize it in the way that the name and namespace of the root element (=array) is changed and individual NetworkComponent-item's name is changed to component. I have a code below that causes an enception:
System.InvalidOperationException: There was an error reflecting type 'ComponentSyncService.NetworkComponent[]'. ---> System.InvalidOperationException: XmlRoot and XmlType attributes may not be specified for the type ComponentSyncService.NetworkComponent[].
XmlAttributeOverrides xaos = new XmlAttributeOverrides(); // the array itself aka the root. change name and namespace XmlElementAttribute xea = new XmlElementAttribute(_updatedComponents.GetType()); xea.Namespace = "http://www.xxx.com/nis/componentsync"; xea.ElementName = "components"; XmlAttributes xas = new XmlAttributes(); xas.XmlElements.Add(xea); xaos.Add(_updatedComponents.GetType(), xas); // then the items of the array. just change the name xea = new XmlElementAttribute(typeof(networkcomponent)); xea.ElementName = "component"; xas = new XmlAttributes(); xas.XmlElements.Add(xea); xaos.Add(typeof(NetworkComponent), "NetworkComponent", xas); XmlSerializer serializer = new XmlSerializer(_updatedComponents.GetType(), xaos); XmlTextWriter writer = new XmlTextWriter(string.Format("{0}\\ComponentSyncWS_{1}.xml", Preferences.FileSyncDirectory, requestId), Encoding.UTF8); serializer.Serialize(writer, _updatedComponents);
Cheers & BR: Matti