Dữ liệu nhập của bạn không hợp lệ XML, nó thiếu thẻ đóng trên các phần tử thư bên trong. Nhưng giả sử định dạng là hợp lệ, bạn có thể phân tích ra cấu trúc của bạn như trong:
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();
Bạn cũng có thể sử dụng XDocument
cho một tài liệu XML đầy đủ, và sử dụng phương pháp Load
thay vì Parse
nếu bạn đang sử dụng một tập tin XML hoặc một luồng, ví dụ. Ngoài ra, bạn có thể chọn vào một lớp cụ thể nếu bạn đã xác định. Với một định nghĩa lớp của
class Message
{
public string Subclass { get; set; }
public string Context { get; set; }
public string Key { get; set; }
}
Bạn có thể sử dụng select new Message
trong truy vấn, và kết quả sẽ là một List<Message>
, trong khi ngay bây giờ nó là một danh sách của một loại vô danh.
Nguồn
2012-02-01 02:54:58