LINQ to XML 在 C# 中创建对象

LINQ to XML create object in C#

我正在阅读 XML 回复,XML 看起来像这样:

<?xml version=""1.0"" encoding=""UTF-8""?>
<Errors>
    <Error>Error Msg 1</Error>
    <Error>Error Msg 2</Error>
</Errors>

我有 类 回复:

public class Error
{
    public string ErrorMessage { get; set; }
}


public class OrderCreationResponse
{
    public Error[] Errors { get; set; }
    ...
}

我尝试使用以下代码创建一个 OrderCreationResponse

var orderCreationResponse = xDocument.Root
    .Elements("Errors")
    .Select(x => new OrderCreationResponse
    {
        Errors = x.Elements("Error").Select(c => new Error
        {
            ErrorMessage = (string) c.Element("Error").Value
        }).ToArray()
    }).FirstOrDefault();

但它总是 returns null。我做错了什么?

您的 xDocument.Root 您的 Errors 元素,因此它下面没有 Errors 元素。 Error 你也犯了类似的错误 - 当你在它下面寻找更多时,你已经在那个元素中了。

改为:

var orderCreationResponse = xDocument
    .Elements("Errors")
    .Select(x => new OrderCreationResponse
    {
        Errors = x.Elements("Error")
            .Select(c => new Error {ErrorMessage = c.Value})
            .ToArray()
    }).FirstOrDefault();