xml にシリアライズしたいクラスがあります。class の構造を変更せずに、生成された xml (要素内の要素) でプロパティの 1 つを下のレベルに移動したいと考えています。XmlSerializer を使用してこれを行うことは可能ですか?
例:
生成された xml:
<Person>
<firstname xmlns=\"http://myschema.com\">John</firstname>
<postcode xmlns=\"http://myschema.com\">N1 0XE</postcode>
</Person>
必要な xml:
<Person>
<firstname xmlns=\"http://myschema.com\">John</firstname>
<address>
<postcode xmlns=\"http://myschema.com\">N1 0XE</postcode>
</address>
</Person>
コード:
[Serializable]
[XmlType(Namespace = "http://myschema.com")]
public class Person
{
[XmlElement("firstname")]
public string FirstName { get; set; }
[XmlElement("postcode")]
public string Postcode { get; set; }
}
シリアライザー:
var xmlSerializer = new XmlSerializer(typeof(Person));
var stringWriter = new StringWriter();
var xmlWriter = XmlWriter.Create(stringWriter);
xmlSerializer.Serialize(xmlWriter, person);