diff --git a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/Program.cs b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/Program.cs
index 7783d4b8bd..b52aa8d041 100644
--- a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/Program.cs
+++ b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/Program.cs
@@ -1,13 +1,43 @@
using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+using XMLSerializationInCsharp_v1;
-namespace XMLSerializationInCsharp
+var patient = new Patient()
{
+ ID = 232323,
+ FirstName = "John",
+ LastName = "Doe",
+ Birthday = new DateTime(1990, 12, 30),
+ RoomNo = 310
+};
- class Program
- {
- static void Main(string[] args)
- {
- Console.Write("hello world");
- }
- }
+// The article's first example: a StreamWriter over a file.
+var serializer = new XmlSerializer(typeof(Patient));
+using (var writer = new StreamWriter("patients.xml"))
+{
+ serializer.Serialize(writer, patient);
}
+
+Console.WriteLine(File.ReadAllText("patients.xml"));
+Console.WriteLine();
+
+// The article's last example: an XmlWriter with indentation, UTF-8 without a byte order mark,
+// and no xmlns:xsi or xmlns:xsd declarations on the root element.
+var namespaces = new XmlSerializerNamespaces();
+namespaces.Add(string.Empty, string.Empty);
+
+var settings = new XmlWriterSettings
+{
+ Indent = true,
+ Encoding = new UTF8Encoding(false)
+};
+
+using (var xmlWriter = XmlWriter.Create("patient.xml", settings))
+{
+ serializer.Serialize(xmlWriter, patient, namespaces);
+}
+
+Console.WriteLine(File.ReadAllText("patient.xml"));
diff --git a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/XMLSerializationInCsharp.csproj b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/XMLSerializationInCsharp.csproj
index 2082704286..a15a29bf12 100644
--- a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/XMLSerializationInCsharp.csproj
+++ b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharp/XMLSerializationInCsharp.csproj
@@ -2,7 +2,7 @@
Exe
- net5.0
+ net10.0
diff --git a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationInCsharpTests.csproj b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationInCsharpTests.csproj
index 8e9671cfd6..a3c4672bb8 100644
--- a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationInCsharpTests.csproj
+++ b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationInCsharpTests.csproj
@@ -1,16 +1,16 @@
- net5.0
+ net10.0
false
-
-
-
-
+
+
+
+
diff --git a/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationUnitTest_v6.cs b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationUnitTest_v6.cs
new file mode 100644
index 0000000000..2e1792ef1f
--- /dev/null
+++ b/xml-csharp/XMLSerializationInCsharp/XMLSerializationInCsharpTests/XMLSerializationUnitTest_v6.cs
@@ -0,0 +1,59 @@
+using NUnit.Framework;
+using System;
+using System.IO;
+using System.Text;
+using System.Xml;
+using System.Xml.Serialization;
+using XMLSerializationInCsharp_v1;
+
+namespace XMLSerializationInCsharpTests
+{
+ public class XMLSerializationUnitTest_v6
+ {
+ string xml = @"
+
+ 232323
+ John
+ Doe
+ 1990-12-30T00:00:00
+ 310
+";
+
+ [Test]
+ public void WhenSerializingWithXmlWriterSettingsAndEmptyNamespaces_ThenNoNamespacesAndUtf8Declaration()
+ {
+ var patient = new Patient()
+ {
+ ID = 232323,
+ FirstName = "John",
+ LastName = "Doe",
+ Birthday = new DateTime(1990, 12, 30),
+ RoomNo = 310
+ };
+
+ var namespaces = new XmlSerializerNamespaces();
+ namespaces.Add(string.Empty, string.Empty);
+
+ var settings = new XmlWriterSettings
+ {
+ Indent = true,
+ Encoding = new UTF8Encoding(false)
+ };
+
+ var serializer = new XmlSerializer(typeof(Patient));
+ using var stream = new MemoryStream();
+ using (var writer = XmlWriter.Create(stream, settings))
+ {
+ serializer.Serialize(writer, patient, namespaces);
+ }
+
+ var bytes = stream.ToArray();
+ var result = Encoding.UTF8.GetString(bytes);
+
+ Assert.That(bytes[0], Is.EqualTo((byte)'<'), "UTF8Encoding(false) writes no byte order mark");
+ Assert.That(result, Does.Not.Contain("xmlns:xsi"));
+ Assert.That(result, Does.Not.Contain("xmlns:xsd"));
+ Assert.That(result.Replace("\r\n", "\n"), Is.EqualTo(xml.Replace("\r\n", "\n")));
+ }
+ }
+}