我正在尝试将简单数据类型序列化为XML,但是以满足现有API的特定方式。 (假设必须以这种方式形成所需的XML)
这是所需的XML:
<foo>
<value>derp</value>
</foo>
我希望在课堂上将其表示为
String foo;
我所知道的唯一两个选项是
<foo>derp</foo>
myFoo.Value = "derp";
代替优先
foo = "derp";
有没有办法在类中包含简单字符串,但用<value>
子元素表示它?
答案 0 :(得分:5)
使用此实现:
[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>