diff --git a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs index 9241eadc04026..f0310fa2abb5e 100644 --- a/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs +++ b/src/libraries/System.Private.Xml/src/System/Xml/Serialization/XmlSerializer.cs @@ -317,9 +317,7 @@ public void Serialize(TextWriter textWriter, object? o) [RequiresUnreferencedCode(TrimSerializationWarning)] public void Serialize(TextWriter textWriter, object? o, XmlSerializerNamespaces? namespaces) { - XmlTextWriter xmlWriter = new XmlTextWriter(textWriter); - xmlWriter.Formatting = Formatting.Indented; - xmlWriter.Indentation = 2; + XmlWriter xmlWriter = XmlWriter.Create(textWriter, new XmlWriterSettings() { Indent = true }); Serialize(xmlWriter, o, namespaces); } @@ -332,9 +330,7 @@ public void Serialize(Stream stream, object? o) [RequiresUnreferencedCode(TrimSerializationWarning)] public void Serialize(Stream stream, object? o, XmlSerializerNamespaces? namespaces) { - XmlTextWriter xmlWriter = new XmlTextWriter(stream, null); - xmlWriter.Formatting = Formatting.Indented; - xmlWriter.Indentation = 2; + XmlWriter xmlWriter = XmlWriter.Create(stream, new XmlWriterSettings() { Indent = true }); Serialize(xmlWriter, o, namespaces); } @@ -421,10 +417,7 @@ private XmlMapping GetMapping() [RequiresUnreferencedCode(TrimDeserializationWarning)] public object? Deserialize(Stream stream) { - XmlTextReader xmlReader = new XmlTextReader(stream); - xmlReader.WhitespaceHandling = WhitespaceHandling.Significant; - xmlReader.Normalization = true; - xmlReader.XmlResolver = null; + XmlReader xmlReader = XmlReader.Create(stream, new XmlReaderSettings() { IgnoreWhitespace = true }); return Deserialize(xmlReader, null); } diff --git a/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.RuntimeOnly.cs b/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.RuntimeOnly.cs index 182fb0a3d717d..bd8abe6ad5a94 100644 --- a/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.RuntimeOnly.cs +++ b/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.RuntimeOnly.cs @@ -262,6 +262,13 @@ public static void Xml_StringAsRoot() "Hello World! \u6F22 \u00F1")); } + [Fact] + public static void Xml_StringWithNullChar() + { + Assert.Throws(() => SerializeWithDefaultValue("Sample\0String", null)); + Assert.Throws(() => DeserializeFromXmlString("Sample�String")); + } + [Fact] public static void Xml_UintAsRoot() { diff --git a/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs b/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs index 364c4f880082b..28d3f11df9b54 100644 --- a/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs +++ b/src/libraries/System.Private.Xml/tests/XmlSerializer/XmlSerializerTests.cs @@ -1726,6 +1726,17 @@ private static bool SerializeWithDefaultValue(T value, string baseline) } } + private static T DeserializeFromXmlString(string xmlString) + { + XmlSerializer serializer = new XmlSerializer(typeof(T)); + using (Stream ms = GenerateStreamFromString(xmlString)) + { + T value = (T)serializer.Deserialize(ms); + return value; + } + + } + [Fact] public static void Xml_TypeWithMismatchBetweenAttributeAndPropertyType() {