gpt4 book ai didi

c# - XML 序列化不填充数组

转载 作者:太空宇宙 更新时间:2023-11-03 14:38:43 26 4
gpt4 key购买 nike

我正在尝试序列化以下 XML。但是“Keys”部分没有被填充,它在序列化对象中显示为 null。

<?xml version="1.0"?>
<Golden>
<SecType>
<ID>New</ID>
<Count>1</Count>
</SecType>
<Request>
<Action>New</Action>
<Keys>
<Key>
<ReferenceType>AAA</ReferenceType>
<ReferenceValue>1111</ReferenceValue>
<Description></Description>
</Key>
<Key>
<ReferenceType>BBBB</ReferenceType>
<ReferenceValue>22222</ReferenceValue>
<Description></Description>
</Key>
</Keys>
</Request></Golden>

我正在尝试创建一个自定义类对象以供进一步使用。请在下面查看我的代码。

[Serializable]
[XmlRootAttribute("Golden")]
public class Process
{
[XmlElementAttribute("SecType")]
public SecType secType { get; set; }
[XmlElementAttribute("Request")]
public Request request { get; set; }
}

[Serializable]
[XmlRootAttribute("SecType")]
public class SecType
{
[XmlElementAttribute("ID")]
public string ID { get; set; }
[XmlElementAttribute("Count")]
public int Count { get; set; }
}

[Serializable]
[XmlRootAttribute("Request")]
public class Request
{
[XmlElementAttribute("Action")]
public string Action { get; set; }
[XmlElementAttribute("Keys")]
public Keys keys { get; set; }
}

[Serializable()]
[XmlRootAttribute("Keys")]
public class Keys
{
[XmlArray("Keys")]
[XmlArrayItem("Key", typeof(Key))]
public Key[] key { get; set; }
}

[Serializable]
[XmlRootAttribute("Key")]
public class Key
{
[XmlElementAttribute("ReferenceType")]
public string ReferenceType { get; set; }
[XmlElementAttribute("ReferenceValue")]
public string ReferenceValue { get; set; }
[XmlElementAttribute("Description")]
public string Description { get; set; }
}


string sPath = @"C:\Test\ConsoleApp1\test.xml";
Process proc = new Process();
XmlSerializer serializer = new XmlSerializer(typeof(Process));
StreamReader reader = new StreamReader(sPath);
proc = (Process)serializer.Deserialize(reader);
reader.Close();

我主要引用this .但它在我的实现中不起作用。谢谢你的帮助

最佳答案

我刚刚修复了关键元素:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Serialization;

namespace ConsoleApplication142
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create(FILENAME);
XmlSerializer serializer = new XmlSerializer(typeof(Process));
Process proc = (Process)serializer.Deserialize(reader);
}
}
[Serializable]
[XmlRootAttribute("Golden")]
public class Process
{
[XmlElementAttribute("SecType")]
public SecType secType { get; set; }
[XmlElementAttribute("Request")]
public Request request { get; set; }
}

[Serializable]
[XmlRootAttribute("SecType")]
public class SecType
{
[XmlElementAttribute("ID")]
public string ID { get; set; }
[XmlElementAttribute("Count")]
public int Count { get; set; }
}

[Serializable]
[XmlRootAttribute("Request")]
public class Request
{
[XmlElementAttribute("Action")]
public string Action { get; set; }
[XmlArray("Keys")]
[XmlArrayItem("Key")]
public Key[] keys { get; set; }
}

[Serializable]
[XmlRootAttribute("Key")]
public class Key
{
[XmlElementAttribute("ReferenceType")]
public string ReferenceType { get; set; }
[XmlElementAttribute("ReferenceValue")]
public string ReferenceValue { get; set; }
[XmlElementAttribute("Description")]
public string Description { get; set; }
}


}

关于c# - XML 序列化不填充数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58735696/

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