Su entrada no es XML válido, le faltan etiquetas de cierre en los elementos del mensaje interno. Pero suponiendo que el formato era válida, se podría analizar fuera de su estructura como en:
string xml = @"<messages>
<message subclass=""a"" context=""d"" key=""g""/>
<message subclass=""b"" context=""e"" key=""h""/>
<message subclass=""c"" context=""f"" key=""i""/>
</messages>";
var messagesElement = XElement.Parse(xml);
var messagesList = (from message in messagesElement.Elements("message")
select new
{
Subclass = message.Attribute("subclass").Value,
Context = message.Attribute("context").Value,
Key = message.Attribute("key").Value
}).ToList();
También puede utilizar XDocument
para un documento XML completo, y utilizar el método en lugar de Parse
Load
si estuviera utilizando un archivo XML o una secuencia, por ejemplo. Además, puede seleccionar una clase concreta si tiene una definida. Dada una definición de clase de
class Message
{
public string Subclass { get; set; }
public string Context { get; set; }
public string Key { get; set; }
}
Usted podría utilizar select new Message
en la consulta, y el resultado sería un List<Message>
, mientras que en este momento se trata de una lista de un tipo anónimo.