L'input non è XML valido, mancano i tag di chiusura sugli elementi del messaggio interno. Ma assumendo il formato era valido, si potrebbe analizzare la vostra struttura di cui:
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();
È inoltre possibile utilizzare XDocument
tratta di un documento XML, e utilizzare il metodo al posto di Parse
Load
se si stesse utilizzando un file XML o un flusso, per esempio. Inoltre, puoi selezionare una classe concreta se ne hai una definita. Data una definizione di classe di
class Message
{
public string Subclass { get; set; }
public string Context { get; set; }
public string Key { get; set; }
}
Potreste usare select new Message
nella query, e il risultato sarebbe un List<Message>
, mentre in questo momento si tratta di un elenco di un tipo anonimo.
fonte
2012-02-01 02:54:58