Skip to content

Instantly share code, notes, and snippets.

View dontpaniclabsgists's full-sized avatar

Don't Panic Labs dontpaniclabsgists

View GitHub Profile
<?xml version="1.0" encoding="utf-8"?>
<Person>
<First>John</First>
<Last>Doe</Last>
<Age>30</Age>
<Email>[email protected]</Email>
<PhoneNumbers>
<PhoneNumber>123-456-7890</PhoneNumber>
<PhoneNumber>098-765-4321</PhoneNumber>
</PhoneNumbers>
public class Utf8StringWriter : StringWriter
{
public override Encoding Encoding => Encoding.UTF8;
}
```
Using this custom writer, we can write our XML in the same way.
```C#
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (Utf8StringWriter writer = new Utf8StringWriter())
{
<?xml version="1.0" encoding="utf-16"?>
<Person>
<First>John</First>
<Last>Doe</Last>
<Age>30</Age>
<Email>[email protected]</Email>
<PhoneNumbers>
<PhoneNumber>123-456-7890</PhoneNumber>
<PhoneNumber>098-765-4321</PhoneNumber>
</PhoneNumbers>
var namespaces = new XmlSerializerNamespaces();
namespaces.Add(string.Empty, string.Empty);
XmlSerializer serializer = new XmlSerializer(typeof(Person));
using (StringWriter writer = new StringWriter())
{
serializer.Serialize(writer, person, namespaces);
Console.WriteLine(writer.ToString());
}
<?xml version="1.0" encoding="utf-16"?>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<First>John</First>
<Last>Doe</Last>
<Email>[email protected]</Email>
<PhoneNumbers>
<PhoneNumber>123-456-7890</PhoneNumber>
<PhoneNumber>098-765-4321</PhoneNumber>
</PhoneNumbers>
</Person>
Person person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 16,
Email = "[email protected]",
PhoneNumbers = new PhoneNumber[]
{
new PhoneNumber { AreaCode = "123", Number = "456-7890" },
new PhoneNumber { AreaCode = "098", Number = "765-4321" }
<?xml version="1.0" encoding="utf-16"?>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<First>John</First>
<Last>Doe</Last>
<Age>30</Age>
<Email xsi:nil="true" />
<PhoneNumbers>
<PhoneNumber>123-456-7890</PhoneNumber>
<PhoneNumber>098-765-4321</PhoneNumber>
</PhoneNumbers>
Person person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30,
Email = null,
PhoneNumbers = new PhoneNumber[]
{
new PhoneNumber { AreaCode = "123", Number = "456-7890" },
new PhoneNumber { AreaCode = "098", Number = "765-4321" }
<?xml version="1.0" encoding="utf-16"?>
<Person xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<First>John</First>
<Last>Doe</Last>
<Age>30</Age>
<Email>[email protected]</Email>
<PhoneNumbers>
<PhoneNumber>123-456-7890</PhoneNumber>
<PhoneNumber>098-765-4321</PhoneNumber>
</PhoneNumbers>
Person person = new Person
{
FirstName = "John",
LastName = "Doe",
Age = 30,
Email = "[email protected]",
PhoneNumbers = new PhoneNumber[]
{
new PhoneNumber { AreaCode = "123", Number = "456-7890" },
new PhoneNumber { AreaCode = "098", Number = "765-4321" }