Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将对象序列化为XML以获得名为“类似字段值”的标记列表_C#_Xml_Serialization - Fatal编程技术网

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是一个巨大的难题