gpt4 book ai didi

c# - 在 C# 中,我无法将 XML 反序列化为对象

转载 作者:数据小太阳 更新时间:2023-10-29 02:56:30 26 4
gpt4 key购买 nike

我已经查看了此处与此类似的各种问题,但无法让我的解决方案发挥作用。

我正在使用 Visual Studio 2015 社区构建 WPF 项目。

我从我的后端 API 获取 xml,我试图将它转换成 C# 对象,但我无法让它工作。

这是xml

<response>
<computer_setting id="1" hospital_name="foo" computer_type="bar" environment="staging" label_printer_name="labels" document_printer_name="docs"/>
</response>

这是类

using System.Xml.Serialization;

namespace Casechek.Kiosk
{
[XmlRoot("response")]
public class ComputerSettingResponse
{
[XmlElement("computer_setting")]
internal ComputerSetting Settings { get; set; }
}

internal class ComputerSetting
{
[XmlAttribute("id")]
internal string Id { get; set; }
[XmlAttribute("hospital_name")]
internal string HospitalName { get; set; }
[XmlAttribute("computer_type")]
internal string ComputerType { get; set; }
[XmlAttribute("environment")]
internal string Environment { get; set; }
[XmlAttribute("label_printer_name")]
internal string LabelPrinterName { get; set; }
[XmlAttribute("document_printer_name")]
internal string DocumentPrinterName { get; set; }
}
}

这是我反序列化它的尝试

// Get ComputerSettings
String _Url = this.ApiUrl
+ "/api1/hospitals/foo/settings.xml"
+ "?access_token=" + Authentication.AccessToken;

XmlSerializer _Serializer = new XmlSerializer(typeof(ComputerSettingResponse));
ComputerSettingResponse _ComputerSettingResponse = new ComputerSettingResponse();
using (XmlTextReader _XmlReader = new XmlTextReader(_Url))
{
_ComputerSettingResponse = (ComputerSettingResponse)_Serializer.Deserialize(_XmlReader);
Debug.WriteLine(_ComputerSettingResponse.Settings.Environment);
}

但是当它到达 Debug.WriteLine() 时抛出 NullReference 异常

{“对象引用未设置为对象的实例。”

我已经检查过 url 是否正确返回了 xml,所以它一定是一个构造不佳的类,或者我没有正确地进行反序列化。

最佳答案

Visual Studio 有一些不错的工具可以从 XML 或 JSON 生成可序列化的类 - 只需将 XML 示例复制到剪贴板,打开一个空类文件并将其粘贴为 Visual Studio 中具有以下菜单路径的类:编辑 -> 选择性粘贴 -> 将 XML 作为类粘贴 ...或者,对于 JSON,“将 JSON 作为类粘贴”。

关于c# - 在 C# 中,我无法将 XML 反序列化为对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31976419/

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