c# - 使用 XElement 进行 XML 解析

标签 c# xml xelement

似乎无法找到如何使用 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/

相关文章:

c# - 以下示例代码中 AttemptController 中的静态字段是什么意思?

html - 获取文本,后跟某些文本

XML数据结构

java - 如何将android背景颜色设置到Fragment中

c# - 将类型参数转换为 T

c# - ASP.NET 将 xml 字符串转换为字典

c# - 如何使用用户 ID(对象 ID)从 Azure Active Directory 获取用户名

C# SynchronizingObject 和 Timer.Timer 线程

c# - C#中的引用类型和ref有什么区别?