diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index 4db6eeed..5e520c45 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -43,6 +43,7 @@ using Newtonsoft.Json.Utilities; using Newtonsoft.Json.Linq; #if !NET20 using System.Xml.Linq; +using System.Diagnostics; #endif @@ -1909,7 +1910,27 @@ namespace Newtonsoft.Json.Tests.Converters Assert.AreEqual(xml.notNull.ToString(), w2.notNull.ToString()); } #endif + + [Test] + public void SerializeAndDeserializeXmlWithNamespaceInChildrenRootDontHaveNameSpace() + { + var xmlString = @" + Asd + AAA + adad + "; + + var xml = XElement.Parse(xmlString); + + var json1 = JsonConvert.SerializeXNode(xml); + var xmlBack = JsonConvert.DeserializeObject(json1); + + var equals = XElement.DeepEquals(xmlBack, xml); + Assert.IsTrue(equals); + } } } -#endif \ No newline at end of file +#endif + + diff --git a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs index 8a742295..3fa91b0d 100644 --- a/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs +++ b/Src/Newtonsoft.Json/Converters/XmlNodeConverter.cs @@ -1232,10 +1232,9 @@ namespace Newtonsoft.Json.Converters if (reader.TokenType != JsonToken.EndObject) { manager.PushScope(); - DeserializeNode(reader, document, manager, element); - manager.PopScope(); + manager.RemoveNamespace(string.Empty, manager.DefaultNamespace); } } } @@ -1394,6 +1393,7 @@ namespace Newtonsoft.Json.Converters } else { + finishedAttributes = true; }