From 5dac5ed88b1ba50ae7da8dbb8b4f78851267df53 Mon Sep 17 00:00:00 2001 From: Stephan Date: Fri, 11 Sep 2015 13:16:02 +0200 Subject: [PATCH] U4-7084 - fix XmlExtensions, publishing a package works --- src/Umbraco.Core/XmlExtensions.cs | 12 ++++-------- src/Umbraco.Tests/XmlExtensionsTests.cs | 15 +++++++++++++++ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/Umbraco.Core/XmlExtensions.cs b/src/Umbraco.Core/XmlExtensions.cs index b81785eb7e..e2518c791a 100644 --- a/src/Umbraco.Core/XmlExtensions.cs +++ b/src/Umbraco.Core/XmlExtensions.cs @@ -300,21 +300,17 @@ namespace Umbraco.Core public static XmlNode GetXmlNode(this XContainer element) { - using (XmlReader xmlReader = element.CreateReader()) + using (var xmlReader = element.CreateReader()) { - XmlDocument xmlDoc = new XmlDocument(); + var xmlDoc = new XmlDocument(); xmlDoc.Load(xmlReader); - return xmlDoc.FirstChild; + return xmlDoc.DocumentElement; } } public static XmlNode GetXmlNode(this XContainer element, XmlDocument xmlDoc) { - using (XmlReader xmlReader = element.CreateReader()) - { - xmlDoc.Load(xmlReader); - return xmlDoc.DocumentElement; - } + return xmlDoc.ImportNode(element.GetXmlNode(), true); } // this exists because diff --git a/src/Umbraco.Tests/XmlExtensionsTests.cs b/src/Umbraco.Tests/XmlExtensionsTests.cs index 8cd934effc..bc4a281b66 100644 --- a/src/Umbraco.Tests/XmlExtensionsTests.cs +++ b/src/Umbraco.Tests/XmlExtensionsTests.cs @@ -29,5 +29,20 @@ namespace Umbraco.Tests Assert.AreEqual(xmlNode.InnerText, "hello world"); } + + [Test] + public void ToXmlNodeIsNonDestructive() + { + const string xml = "helloworld"; + + var cdata = new XElement("test", new XText("hello world")); + var xdoc = new XmlDocument(); + xdoc.LoadXml(xml); + + var xmlNode = cdata.GetXmlNode(xdoc); + + Assert.AreEqual(xmlNode.InnerText, "hello world"); + Assert.AreEqual(xml, xdoc.OuterXml); + } } } \ No newline at end of file