【问题标题】:How do I create an element with attributes out of a property如何从属性中创建具有属性的元素
【发布时间】:2013-04-15 19:38:35
【问题描述】:

我在 .net 中使用 xml 的序列化。我有一个名为 tier 的属性:

public string tier { get; set; }

对象序列化后我想要得到的最终结果是:

<settings>
    //Where the value is the value of the tier property
    <setting name="tier" value="2" /> 
</settings>

通过该属性可以使用哪些 xml 序列化属性来完成此操作?

【问题讨论】:

  • 我不认为你可以用序列化属性来实现这一点。您的对象还有其他属性吗?这些属性也应该是setting 元素?
  • @programmer93 将创建属性 tier="2"
  • @lazyberezovsky 我以为这就是他想要的??
  • 查看 XmlAttributeAttribute。
  • 是的,我的“installfile”对象确实有其他属性,但没有一个会进入我试图创建的这个设置元素。

标签: c# .net xml-serialization


【解决方案1】:

简单地说,XmlSerializer 不直接支持这种情况。它可以处理:

<foo><tier>2</tier></foo>

<foo tier="2"/>

但不是你想要的,除非你把模型扭曲得很厉害。

是否可以使用 LINQ-to-XML?

var setting = new Setting { tier = "2" };

var xml = new XElement("settings", new XElement("setting",
    new XAttribute("tier", setting.tier)));

不是完全自动化的序列化,但它可以完成工作。

【讨论】:

  • 我正在考虑进行一些重组。我没有一个简单的字符串属性,而是考虑将它包装在一个“设置”类中,该类中有两个成员......“名称”和“值”,然后将 [xmlattribute] 应用于这些成员和 [xmlelement]到实际课堂。对这种方法有什么想法吗?
猜你喜欢
  • 2019-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-22
相关资源
最近更新 更多