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();
我正在阅读 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();