似乎无法找到如何使用 XElement 适本地解析它:
<messages>
<message subclass="a" context="d" key="g">
<message subclass="b" context="e" key="h">
<message subclass="c" context="f" key="i">
</messages>
我想把它放到一个列表中,其中包含三个字符串子类、上下文和键。
最佳答案
您的输入不是有效的 XML,它在内部消息元素上缺少结束标记。但假设格式有效,您可以解析出您的结构,如下所示:
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();
您还可以使用 XDocument
完整的 XML 文档,并使用 Load
方法而不是 Parse
例如,如果您使用的是 XML 文件或流。此外,如果您定义了具体类,则可以选择具体类。给定
class Message
{
public string Subclass { get; set; }
public string Context { get; set; }
public string Key { get; set; }
}
你可以使用 select new Message
在查询中,结果将是 List<Message>
, 而现在它是一个匿名类型的列表。
关于c# - 使用 XElement 进行 XML 解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9090033/