gpt4 book ai didi

c# - 反序列化

转载 作者:数据小太阳 更新时间:2023-10-29 01:55:09 24 4
gpt4 key购买 nike

我有以下 xml 文件。

<a>
<b>
<c>val1</c>
<d>val2</d>
</b>
<b>
<c>val3</c>
<d>val4</d>
</b>
<a>

我想将其反序列化为一个类,并且我想使用创建的类的对象访问它们。我正在使用 C#。我能够反序列化并将值放入类'a的对象中’(<a> 标签)。但是如何访问 <b> 的值从这个对象?我做了以下编码:

[Serializable()][XmlRoot("a")]public class a{    [XmlArray("a")]    [XmlArrayItem("b", typeof(b))]    public b[] bb{ get; set; }}[Serializable()]public class b{    [XmlElement("c")]    public string c{ get; set; }    [XmlElement("d")]    public string d{ get; set; }    }class Program{        static void Main(string[] args)        {            a i = null;            string path = "test.xml";            XmlSerializer serializer = new XmlSerializer(typeof(a));            StreamReader reader = new StreamReader(path);            i = (a)serializer.Deserialize(reader);            reader.Close();            //i want to print all b tags here            Console.Read();        }    }

最佳答案

为此,您可以进行以下更改

public class a
{
[XmlElement("b")]
public b[] bb{ get; set; }
}

通过在数组上使用 XmlElement 属性,您实际上是在告诉序列化程序数组元素应该作为当前元素的直接子元素进行序列化/反序列化。

这是一个工作示例,我将 XML 放在一个字符串中只是为了使示例自包含。

using System;
using System.IO;
using System.Xml.Serialization;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string xml =
@"<a>
<b>
<c>val1</c>
<d>val2</d>
</b>
<b>
<c>val3</c>
<d>val4</d>
</b>
</a>";

XmlSerializer xs = new XmlSerializer(typeof(a));
a i = (a)xs.Deserialize(new StringReader(xml));

if (i != null && i.bb != null && i.bb.Length > 0)
{
Console.WriteLine(i.bb[0].c);
}
else
{
Console.WriteLine("Something went wrong!");
}

Console.ReadKey();
}
}


[XmlRoot("a")]
public class a
{
[XmlElement("b")]
public b[] bb { get; set; }
}

public class b
{
[XmlElement("c")]
public string c { get; set; }
[XmlElement("d")]
public string d { get; set; }
}
}

关于c# - 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3035637/

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