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("SampleString"));
+ }
+
[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()
{