From b81b98444838458c6c07e445cb6d690495713c94 Mon Sep 17 00:00:00 2001 From: Ygal Date: Thu, 20 Feb 2014 22:36:35 +0200 Subject: [PATCH 1/2] Fix Bug when Convert Xml and Xml dont have namespace and one of children have namespace --- .../Converters/XmlNodeConverterTest.cs | 23 ++++++++++++++++++- .../Converters/XmlNodeConverter.cs | 4 ++-- 2 files changed, 24 insertions(+), 3 deletions(-) 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; } From 3d9c921d9d808d80fbe64f05079141f595f900d7 Mon Sep 17 00:00:00 2001 From: Ygal Date: Thu, 20 Feb 2014 22:38:56 +0200 Subject: [PATCH 2/2] fix bad using in last commit --- Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs index 5e520c45..0c63f04e 100644 --- a/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs +++ b/Src/Newtonsoft.Json.Tests/Converters/XmlNodeConverterTest.cs @@ -43,7 +43,7 @@ using Newtonsoft.Json.Utilities; using Newtonsoft.Json.Linq; #if !NET20 using System.Xml.Linq; -using System.Diagnostics; + #endif