Deserializzare XML con namespace e più elementi nidificati

Deserializzare XML con namespace e più elementi nidificati

Il problema è che lo spazio dei nomi della classe myrootNS non è corretto perché non corrisponde allo spazio dei nomi previsto nell'XML.

[XmlRoot("myroot", Namespace = "http://jeson.com/")]
public class myrootNS
{
    [XmlElement(Namespace = "")]
    public item[] item { get; set; }
}

Nota che il Namespace il valore della proprietà ha un / finale . Questo è il mio metodo di deserializzazione:

static T Deserialize<T>(string xml)
{
    XmlSerializer serializer = new XmlSerializer(typeof(T));
    XmlReaderSettings settings = new XmlReaderSettings();
    using (StringReader textReader = new StringReader(xml))
    {
        using (XmlReader xmlReader = XmlReader.Create(textReader, settings))
        {
            return (T)serializer.Deserialize(xmlReader);
        }
    }
}

In alternativa al XmlRoot attributo, puoi anche utilizzare l'alternativa XmlRootAttribute costruttore di XmlSerializer da sovrascrivere quando il nome dell'elemento o lo spazio dei nomi differiscono:

var serializer = new XmlSerializer(typeof(myrootNS), 
                     new XmlRootAttribute                             
                     { 
                         ElementName = "myroot", 
                         Namespace = "http://jeson.com/" 
                     });