C# 将对象序列化为XML以获得名为“类似字段值”的标记列表
我有两门课:C# 将对象序列化为XML以获得名为“类似字段值”的标记列表,c#,xml,serialization,C#,Xml,Serialization,我有两门课: public class LocalizationEntry { public List<TranslationPair> Translations { get; set; } } public class TranslationPair { public string Language { get; set; } public string Tr
public class LocalizationEntry
{
public List<TranslationPair> Translations
{
get;
set;
}
}
public class TranslationPair
{
public string Language
{
get;
set;
}
public string Translation
{
get;
set;
}
}
公共类本地化条目
{
公开名单翻译
{
得到;
设置
}
}
公共类TranslationPair
{
公共字符串语言
{
得到;
设置
}
公共字符串翻译
{
得到;
设置
}
}
可以使用标准序列化程序获取这样的XML吗
<LocalizationEntry>
<Translations>
<EN>apple<EN>
<PL>jabłko<PL>
<DE>apfel<DE>
</Translations>
</LocalizationEntry>
苹果
贾布科
阿普费尔
我在考虑类似于XmlArrayItem(ElementName=this.Language)
attribute的东西,但是这个构造当然是非法的,因为在运行时无法确定属性值
谢谢你的帮助。当然,我可以使用其他结构,但我很好奇这是否可能。在.NET Framework中使用XMLSerializer对象
记住将Serializable属性放在类名上
单击此链接,我无法确定如何添加URL的名称抱歉自定义元素名称是一件痛苦的事;我会忘记这里的
XmlSerializer
,因为您必须使用IXmlSerializable
,这是一个巨大的难题。我会改用XElement:
var source = new LocalizationEntry {
Translations = new List<TranslationPair> {
new TranslationPair {Language="EN", Translation="apple"},
new TranslationPair {Language="PL", Translation="jabłko"},
new TranslationPair {Language="DE", Translation="apfel"},
}
};
var el = new XElement("LocalizationEntry",
new XElement("Translations",
from pair in source.Translations
select new XElement(pair.Language, pair.Translation)));
var xml = el.ToString();
var source=新本地化条目{
翻译=新列表{
新的TranslationPair{Language=“EN”,Translation=“apple”},
新的翻译对{Language=“PL”,Translation=“jabłko”},
新的TranslationPair{Language=“DE”,Translation=“apfel”},
}
};
var el=新的XElement(“本地化条目”,
新XElement(“翻译”,
源代码中的成对翻译
选择新元素(pair.Language、pair.Translation));
var xml=el.ToString();
您不能通过此路径进行每元素命名(EN/PL/DE)+1同意当您可以使用更干净的方法时,IXmlSerializable是一个巨大的难题