gpt4 book ai didi

c# - 使用 C# XML Serializer 生成自定义 XML 格式

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

我正在使用 Visual Studio 2013 并尝试使用 C# XML 序列化器/反序列化器将存储在类中的变量与 XML 文件相互转换(我是新手)。

给定一个简单的类:

public class TestXML
{
public String Label = "Hello";
public Boolean Enable = true;
public Int32 PosX = 12;
public Int32 PosY = 34;
}

默认情况下,序列化程序以以下形式生成 XML:

<TestXML>
<Label>Hello</Label>
<Enable>true</Enable>
<PosX>12</PosX>
<PosY>34</PosY>
</TestXML>

然而不幸的是,我的项目要求声明 XML 文件中的参数必须格式化为:

<TestXML>
<model>
<prop name="Label" value="Hello" />
<prop name="Enable" value="true" />
<prop name="PosX" value="12" />
<prop name="PosY" value="34" />
</model>
</TestXML>

我一直在考虑使用 XmlAttributeXmlElement 选项来控制 XML 格式,但看不到任何生成所需格式的方法。有没有办法让序列化程序以这种特定格式存储变量?

最佳答案

根据 king.code 的答案手动控制序列化是一种选择(因此我不会重复)。另一种选择是以不同方式构建您的模型,或者,如果不是一个选项,则创建另一个“数据模型”并将您现有的模型映射到该模型并对其进行序列化。这可能比许多低级 XmlReader/XmlWriter 代码更容易。

为了得到你想要的结果,你需要这样的东西:

public class TestXml
{
[XmlArray("model")]
[XmlArrayItem("prop")]
public List<Prop> Props { get; set; }
}


public class Prop
{
[XmlAttribute("name")]
public string Name { get; set; }

[XmlAttribute("value")]
public string Value { get; set; }
}

此内容:

var xml = new TestXml
{
Props = new List<Prop>
{
new Prop
{
Name = "Label",
Value = "Hello"
}
}
};

然后将序列化为:

<TestXML>
<model>
<prop name="Label" value="Hello" />
</model>
</TestXML>

关于c# - 使用 C# XML Serializer 生成自定义 XML 格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29624215/

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