gpt4 book ai didi

c# - 使用 [XmlAttribute] 进行 xml 反序列化时的空值

转载 作者:太空宇宙 更新时间:2023-11-03 22:40:25 25 4
gpt4 key购买 nike

我有以下 XML;

<?xml version="1.0" encoding="UTF-8" ?>
<feedback>
<report_metadata>
<org_name>example.com</org_name>
</report_metadata>
</feedback>

和下面的 Feedback.cs 类;

   [XmlRoot("feedback", Namespace = "", IsNullable = false)]
public class Feedback
{
[XmlElement("report_metadata")]
public MetaData MetaData { get; set; }
}


[XmlType("report_metadata")]
public class MetaData
{
[XmlAttribute("org_name")]
public string Organisation { get; set; }
}

当我尝试反序列化时,Organization 的值为空。

var xml = System.IO.File.ReadAllText("example.xml");
var serializer = new XmlSerializer(typeof(Feedback));
using (var reader = new StringReader(input))
{
var feedback = (Feedback)serializer.Deserialize(reader);

}

然而,当我将 Feedback.cs 更改为以下内容时,它起作用了(显然属性名称已更改)。

[XmlType("report_metadata")]
public class MetaData
{
//[XmlAttribute("org_name")]
public string org_name { get; set; }
}

我希望该属性是 Organisation,而不是 org_name。

最佳答案

在示例 XML 文件中,org_name 是一个 XML 元素,而不是 XML 属性。更改
Organisation 属性中的 [XmlAttribute("org_name")]
[XmlElement("org_name")] 会将其反序列化为元素:



[XmlElement("org_name")]
public string Organisation { get; set; }

关于c# - 使用 [XmlAttribute] 进行 xml 反序列化时的空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52497920/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com