gpt4 book ai didi

c# - 向用户呈现文件的 XML 值的最佳方式?

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

我得到了一个 XML 文件,看起来很熟悉:

<root>
<carnumber>12</carnumber>
<carcolor>2</carcolor>
<cartype>5</cartype>
</root>

如您所见,我得到了一些带有值/文本的元素。例如,car 元素可以取 1 到 1000 之间的值。但是 carcolor 元素可以取 1-5 之间的值,cartype 可以取 1-10 之间的值。

重要的是 carcolor 和 cartype 元素的值是有意义的。 carcolor "2"表示红色,"1"表示蓝色等。

所以我需要向用户展示的不是值(value)观,而是值(value)观的真正含义。

我发现自己创建了一些类来表示具有有效值的元素,事情变得非常复杂,我不知道这是否是最好的方法。

我的一个 friend 建议我使用 XML 序列化,因为我的 XML 文件是静态的。它永远不会改变。

我的问题很简单。我只想知道你会如何解决这个问题。我的想法包含表示 XML 元素的类,例如此类中的 cartype 我有一个带有一对的字典。这表示 XML 文件中的值,字符串是该值的含义。我使用大量 Linq 来导航和编辑值。

再次感谢!

最佳答案

这可以像您希望的那样复杂或简单。但是,我会赞同您 friend 使用 XML 序列化的建议,例如:

[XmlRoot("Car")]
public class Car
{
public Car()
{
}

[XmlElement("Number")]
public int Number { get; set; }

[XmlElement("Color")]
public int Color { get; set; }

[XmlElement("Type")]
public int Type { get; set; }
}

序列化:

Car myCar = new Car();
myCar.Number = 1;
myCar.Color = 2;
myCar.Type = 3;

XmlSerializer s = new XmlSerializer(typeof(Car));
TextWriter w = new StreamWriter( @"c:\Car.xml" );
s.Serialize(w, myCar);
w.Close();

反序列化:

Car myCar;
TextReader r = new StreamReader("Car.xml");
myCar = (Car)s.Deserialize(r);
r.Close();

您可以通过为您的 Type 字段公开自定义枚举并在内部序列化与其相关的数字来进一步改进这一点。也可能公开汽车的 Color 枚举并在内部存储一个数值。

关于c# - 向用户呈现文件的 XML 值的最佳方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2087087/

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