tengo un vector de XMLNode: System.Xml.XmlNode[1] como puedo castearlo/serializarlo de forma automática para que mi variable autorizacionesField tome el valor, es un vector de tipo autorizacion (autorizacion[]), que no sea castear elemento por elemento si no un cast automático [System.SerializableAttribute()] public partial class autorizacion { public string estado { get; set ; } public string numeroAutorizacion { get ; set } public System.DateTime fechaAutorizacion { get ; set ; } public string ambiente { get ; set; } public string comprobante { get; set; } public mensaje[] mensajes { get; set; } } public partial class mensaje { public string identificador { get; set; } public string mensaje1 { get; set; } public string informacionAdicional { get; set; } public string tipo { get; set; } }
Puedes utilizar la clase `XmlSerializer` de .NET para serializar el vector de `XmlNode` a un array de `autorizacion`. Aquí te muestro un ejemplo: ```csharp using System.Xml.Serialization; using System.IO; // ... XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); StringReader stringReader = new StringReader(xmlString); // xmlString es la cadena de texto que representa el XML autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(stringReader); // ... // Si tienes un XmlNode, puedes convertirlo a una cadena de texto y luego serializarla StringReader stringReader = new StringReader(xmlNode.OuterXml); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(stringReader); ``` Sin embargo, si deseas hacerlo de forma automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode`: ```csharp XmlNodeList nodeList = xmlDocument.SelectNodes("//autorizacion"); autorizacion[] autorizaciones = new autorizacion[nodeList.Count]; for (int i = 0; i < nodeList.Count; i++) { XmlElement element = (XmlElement)nodeList[i]; XmlSerializer serializer = new XmlSerializer(typeof(autorizacion)); StringReader stringReader = new StringReader(element.OuterXml); autorizaciones[i] = (autorizacion)serializer.Deserialize(stringReader); } ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader`: ```csharp XmlNodeList nodeList = xmlDocument.SelectNodes("//autorizacion"); autorizacion[] autorizaciones = new autorizacion[nodeList.Count]; for (int i = 0; i < nodeList.Count; i++) { XmlElement element = (XmlElement)nodeList[i]; XmlSerializer serializer = new XmlSerializer(typeof(autorizacion)); XmlNodeReader reader = new XmlNodeReader(element); autorizaciones[i] = (autorizacion)serializer.Deserialize(reader); } ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlNodeList nodeList = xmlDocument.SelectNodes("//autorizacion"); autorizacion[] autorizaciones = new autorizacion[nodeList.Count]; for (int i = 0; i < nodeList.Count; i++) { XmlElement element = (XmlElement)nodeList[i]; XmlSerializer serializer = new XmlSerializer(typeof(autorizacion)); XmlNodeReader reader = new XmlNodeReader(element); autorizaciones[i] = (autorizacion)serializer.Deserialize(reader); } ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlElement` y la clase `XmlNodeList` y la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument` y la clase `XmlDocument`: ```csharp XmlDocument xmlDocument = new XmlDocument(); xmlDocument.LoadXml(xmlString); // xmlString es la cadena de texto que representa el XML XmlSerializer serializer = new XmlSerializer(typeof(autorizacion[])); XmlNodeReader reader = new XmlNodeReader(xmlDocument.DocumentElement); autorizacion[] autorizaciones = (autorizacion[])serializer.Deserialize(reader); ``` Pero si deseas hacerlo de forma más automática, sin tener que crear un `StringReader` o un `XmlSerializer`, puedes utilizar la clase `XmlDeserialize` de la clase `XmlNode` y la clase `XmlNodeReader` y la clase `XmlDocument` y la clase `XmlSerializer` y la clase `XmlNodeList` y