C# 如何在C中向简单数据类型添加XML子元素
我试图将一个简单的数据类型序列化为XML,但要以一种特殊的方式满足现有的API。假设所需的XML必须以这种方式形成 以下是所需的XML:C# 如何在C中向简单数据类型添加XML子元素,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我试图将一个简单的数据类型序列化为XML,但要以一种特殊的方式满足现有的API。假设所需的XML必须以这种方式形成 以下是所需的XML: <foo> <value>derp</value> </foo> 我知道的唯一两个选择是 简单的序列化,这当然只会导致 创建一个Foo类,该类创建所需的XML,但强制用户键入 而不是更可取的 foo = "derp"; 有没有办法在类中包含简单字符串,但用子元素表示它?使用以下实现: [XmlRoot("foo
<foo>
<value>derp</value>
</foo>
我知道的唯一两个选择是
简单的序列化,这当然只会导致
创建一个Foo类,该类创建所需的XML,但强制用户键入
而不是更可取的
foo = "derp";
有没有办法在类中包含简单字符串,但用子元素表示它?使用以下实现:
[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>
使用此实现:
[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>
为什么要以这种方式序列化?为了满足现有API编辑的原始问题,您不能在包含foo的类上实现,以完全控制序列化?为什么要以这种方式序列化?为了满足现有API编辑的原始问题,您不能在包含foo的类上实现,完全控制序列化?