【问题标题】:How to add an XML sub-element to a simple data type in C#如何在 C# 中将 XML 子元素添加到简单数据类型
【发布时间】:2011-10-19 14:11:15
【问题描述】:
我正在尝试将一个简单的数据类型序列化为 XML,但以一种特殊的方式来满足现有的 API。 (假设所需的XML必须以这种方式形成)
这是所需的 XML:
<foo>
<value>derp</value>
</foo>
理想情况下,我希望在一个类中将其表示为
String foo;
我知道的仅有的两个选项是
- 简单的序列化,这当然会导致
derp
- 创建一个 Foo 类,该类创建所需的 XML,但强制用户键入
myFoo.Value = "derp";
而不是更可取的
foo = "derp";
有没有办法在类中拥有简单的字符串,但用<value> 子元素表示它?
【问题讨论】:
标签:
c#
.net
xml
xml-serialization
【解决方案1】:
使用这个实现:
[XmlRoot("foo")]
public class Foo
{
[XmlElement("value")]
public string Value { get; set; }
public static implicit operator Foo(string s)
{
return new Foo { Value = s };
}
}
用法:
private static void Main()
{
Foo foo = "abc";
var ns = new XmlSerializerNamespaces();
ns.Add(string.Empty, string.Empty);
var serialzier = new XmlSerializer(typeof(Foo));
using (var writer = new StringWriter())
{
serialzier.Serialize(writer, foo, ns);
Console.WriteLine(writer.ToString());
}
}
输出:
<?xml version="1.0" encoding="utf-16"?>
<foo>
<value>abc</value>
</foo>