Twoje dane wejściowe nie są prawidłowe XML, brakujące znaczniki zamykające w wewnętrznych elementach komunikatu. Ale zakładając, że format był poprawny, można analizować swoje struktury, jak w:
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();
Można również użyć XDocument
dla pełnego dokumentu XML i zastosować metodę zamiast Parse
Load
jeśli były przy użyciu pliku XML lub strumień, na przykład. Dodatkowo możesz wybrać konkretną klasę, jeśli ją posiadasz. Biorąc pod uwagę definicję klasy
class Message
{
public string Subclass { get; set; }
public string Context { get; set; }
public string Key { get; set; }
}
Można użyć select new Message
w zapytaniu, a wynik byłby List<Message>
, podczas gdy teraz jest to lista typ anonimowy.