繁体   English   中英

使用XElement进行XML解析

[英]XML parsing using 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>

我想把它带到一个List,其中有三个字符串子类,context,key。

您的输入不是有效的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文档,例如,如果您使用的是XML文件或流,则使用Load方法而不是Parse 此外,如果您已定义一个,则可以选择具体类。 给出了类的定义

class Message 
{
    public string Subclass { get; set; }
    public string Context { get; set; } 
    public string Key { get; set; }
}

您可以在查询中使用select new Message ,结果将是List<Message> ,而现在它是匿名类型的列表。

XElementDescendants()是我使用的唯一方法,它使用LINQ提供结果。

var abc = doc.Descendants()
    .Where(t => t.Name.LocalName == "pqr")
    .Select(t => t.Value)
    .FirstOrDefault();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM