-
Notifications
You must be signed in to change notification settings - Fork 1
/
Program.cs
99 lines (81 loc) · 3.14 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using Ikriv.Xml;
namespace OverrideXmlSample
{
public class Continent
{
public string Name { get; set; }
public List<Country> Countries { get; set;}
}
public class Country
{
public string Name { get; set; }
public string Capital { get; set; }
}
class Program
{
private static void Serialize(Continent continent, XmlAttributeOverrides overrides)
{
var ns = new XmlSerializerNamespaces();
ns.Add("", "urn:unused");
using (var s = new StringWriter())
{
var serializer = (overrides == null)
? new XmlSerializer(typeof(Continent))
: new XmlSerializer(typeof(Continent), overrides);
serializer.Serialize(s, continent, ns);
Console.WriteLine(s);
}
}
private static XmlAttributeOverrides GetOverrides()
{
return new OverrideXml()
.Override<Continent>()
.XmlRoot("continent")
.Member("Name").XmlAttribute("name")
.Member("Countries").XmlElement("state")
.Override<Country>()
.Member("Name").XmlAttribute("name")
.Member("Capital").XmlAttribute("capital")
.Commit();
}
private static XmlAttributeOverrides GetOverridesRaw()
{
var overrides = new XmlAttributeOverrides();
overrides.Add(typeof(Continent), new XmlAttributes { XmlRoot = new XmlRootAttribute("continent") });
overrides.Add(typeof(Continent), "Name",
new XmlAttributes { XmlAttribute = new XmlAttributeAttribute("name")});
overrides.Add(typeof(Continent), "Countries",
new XmlAttributes { XmlElements = { new XmlElementAttribute("state") } });
overrides.Add(typeof(Country), "Name",
new XmlAttributes { XmlAttribute = new XmlAttributeAttribute("name")});
overrides.Add(typeof(Country), "Capital",
new XmlAttributes { XmlAttribute = new XmlAttributeAttribute("capital")});
return overrides;
}
static void Main(string[] args)
{
var europe = new Continent
{
Name = "Europe",
Countries = new List<Country>
{
new Country { Name = "France", Capital = "Paris" },
new Country { Name = "Germany", Capital = "Berlin" },
new Country { Name = "Spain", Capital = "Madrid" }
}
};
Console.WriteLine("Default serialization");
Serialize(europe, null);
Console.WriteLine();
Console.WriteLine("Serialization with overrides");
Serialize(europe, GetOverrides());
Console.WriteLine();
Console.WriteLine("Serialization with raw overrides");
Serialize(europe, GetOverridesRaw());
}
}
}