Patch applied for #U4-1636

This commit is contained in:
Shannon Deminick
2013-02-19 22:14:08 +06:00
parent 8d38cf3c44
commit 3bfa1be60c
5 changed files with 161 additions and 146 deletions

View File

@@ -16,61 +16,82 @@ namespace Umbraco.Core.Dynamics
[TypeConverter(typeof(DynamicXmlConverter))] [TypeConverter(typeof(DynamicXmlConverter))]
public class DynamicXml : DynamicObject, IEnumerable<DynamicXml>, IEnumerable<XElement> public class DynamicXml : DynamicObject, IEnumerable<DynamicXml>, IEnumerable<XElement>
{ {
[Obsolete("Use StrippedXmlElement or RawXmlElement instead")] /// <summary>
public XElement BaseElement
{
get { return StrippedXmlElement; }
//This should have been read only but we're stuck with it now and we'll have to assume that a person is setting the 'raw' xml
set
{
Mandate.ParameterNotNull(value, "value");
RawXmlElement = value;
StrippedXmlElement = XElement.Parse(
XmlHelper.StripDashesInElementOrAttributeNames(
RawXmlElement.ToString()));
}
}
/// <summary>
/// Returns the XElement used to create the DynamicXml structure /// Returns the XElement used to create the DynamicXml structure
/// </summary> /// </summary>
public XElement BaseElement { get; set; }
/// <summary>
/// Returns the raw XElement used to create the DynamicXml structure if one was specified otherwise returns the
/// same value as BaseElement.
/// </summary>
/// <remarks>
/// This is purely used for when an instance of DynamicXml is created with the overload that supports
/// passing in both a raw xml version and a dash-stripped xml version. Otherwise this value is exactly the
/// same as BaseElement.
/// </remarks>
public XElement RawXmlElement { get; internal set; } public XElement RawXmlElement { get; internal set; }
/// <summary> /// <summary>
/// Returns the XElement for this DynamicXml structure that has been stripped of all of it's hyphens /// Constructor
/// </summary> /// </summary>
public XElement StrippedXmlElement { get; private set; } /// <param name="baseElement"></param>
public DynamicXml(XElement baseElement) public DynamicXml(XElement baseElement)
{ {
if (baseElement == null) return; if (baseElement == null) return;
//same
RawXmlElement = baseElement; RawXmlElement = baseElement;
StrippedXmlElement = XElement.Parse( BaseElement = baseElement;
XmlHelper.StripDashesInElementOrAttributeNames(
RawXmlElement.ToString()));
} }
internal DynamicXml(XElement rawXml, XElement strippedXml) /// <summary>
/// When this constructor is used the BaseElement becomes equivalent to the strippedXml structure
/// </summary>
/// <param name="strippedXml"></param>
/// <param name="rawXml"></param>
internal DynamicXml(XElement strippedXml, XElement rawXml)
{ {
if (rawXml == null) throw new ArgumentNullException("rawXml"); if (rawXml == null) return;
if (strippedXml == null) throw new ArgumentNullException("strippedXml"); if (strippedXml == null) return;
RawXmlElement = rawXml; RawXmlElement = rawXml;
StrippedXmlElement = strippedXml; BaseElement = strippedXml;
} }
/// <summary>
/// When this constructor is used the BaseElement becomes equivalent to the strippedXml structure
/// </summary>
/// <param name="strippedXml"></param>
/// <param name="rawXml"></param>
internal DynamicXml(string strippedXml, string rawXml)
{
if (rawXml == null) return;
if (strippedXml == null) return;
RawXmlElement = XElement.Parse(rawXml);
BaseElement = XElement.Parse(strippedXml);
}
/// <summary>
/// Constructor
/// </summary>
/// <param name="xml"></param>
public DynamicXml(string xml) public DynamicXml(string xml)
{ {
if (xml.IsNullOrWhiteSpace()) return; if (xml.IsNullOrWhiteSpace()) return;
var baseElement = XElement.Parse(xml); var baseElement = XElement.Parse(xml);
//same
RawXmlElement = baseElement; RawXmlElement = baseElement;
StrippedXmlElement = XElement.Parse( BaseElement = baseElement;
XmlHelper.StripDashesInElementOrAttributeNames(
xml));
} }
/// <summary>
/// Constructor
/// </summary>
/// <param name="xpni"></param>
public DynamicXml(XPathNodeIterator xpni) public DynamicXml(XPathNodeIterator xpni)
{ {
if (xpni == null) return; if (xpni == null) return;
@@ -79,34 +100,34 @@ namespace Umbraco.Core.Dynamics
//TODO: OuterXml is really bad for performance! Should actually use the XPathNodeIterator api //TODO: OuterXml is really bad for performance! Should actually use the XPathNodeIterator api
var xml = xpni.Current.OuterXml; var xml = xpni.Current.OuterXml;
var baseElement = XElement.Parse(xml); var baseElement = XElement.Parse(xml);
//same
RawXmlElement = baseElement; RawXmlElement = baseElement;
StrippedXmlElement = XElement.Parse( BaseElement = baseElement;
XmlHelper.StripDashesInElementOrAttributeNames(
xml));
} }
/// <summary> /// <summary>
/// Returns the InnertText based on the stripped xml element /// Returns the InnertText based on the BaseElement object
/// </summary> /// </summary>
public string InnerText public string InnerText
{ {
get get
{ {
return StrippedXmlElement.Value; return BaseElement.Value;
} }
} }
/// <summary> /// <summary>
/// Returns the string representation of the dash-stripped xml element /// Returns the string representation of the BaseElement object
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string ToXml() public string ToXml()
{ {
return StrippedXmlElement.ToString(SaveOptions.DisableFormatting); return BaseElement.ToString(SaveOptions.DisableFormatting);
} }
/// <summary> /// <summary>
/// Returns the string representation of the raw (no dash stripping) xml element /// Returns the string representation of the RawXmlElement object
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public string ToRawXml() public string ToRawXml()
@@ -122,7 +143,7 @@ namespace Umbraco.Core.Dynamics
index = (int)indexes[0]; index = (int)indexes[0];
result = new DynamicXml( result = new DynamicXml(
RawXmlElement.Elements().ElementAt(index), RawXmlElement.Elements().ElementAt(index),
StrippedXmlElement.Elements().ElementAt(index)); BaseElement.Elements().ElementAt(index));
return true; return true;
} }
return base.TryGetIndex(binder, indexes, out result); return base.TryGetIndex(binder, indexes, out result);
@@ -131,12 +152,12 @@ namespace Umbraco.Core.Dynamics
{ {
if (args.Length == 0 && binder.Name == "ToXml") if (args.Length == 0 && binder.Name == "ToXml")
{ {
result = StrippedXmlElement.ToString(); result = BaseElement.ToString();
return true; return true;
} }
if (args.Length == 1 && binder.Name == "XPath") if (args.Length == 1 && binder.Name == "XPath")
{ {
var elements = StrippedXmlElement.XPathSelectElements(args[0].ToString()); var elements = BaseElement.XPathSelectElements(args[0].ToString());
HandleIEnumerableXElement(elements, out result); HandleIEnumerableXElement(elements, out result);
return true; //anyway return true; //anyway
} }
@@ -171,7 +192,7 @@ namespace Umbraco.Core.Dynamics
{ {
result = ((IEnumerable<DynamicXml>) attempt.Result.ObjectResult).Select(x => new DynamicXml( result = ((IEnumerable<DynamicXml>) attempt.Result.ObjectResult).Select(x => new DynamicXml(
x.RawXmlElement, x.RawXmlElement,
x.StrippedXmlElement)); x.BaseElement));
} }
} }
} }
@@ -198,8 +219,8 @@ namespace Umbraco.Core.Dynamics
return false; return false;
} }
//First check for matching name including the 'cleaned' name (i.e. removal of hyphens, etc... ) //Check if the name matches a node based on the BaseElement (which if the correct ctor is used, will be dash stripped)
var elementByNameAttempt = CheckNodeNameMatch(binder.Name, RawXmlElement, true); var elementByNameAttempt = CheckNodeNameMatch(binder.Name, BaseElement);
if (elementByNameAttempt.Success) if (elementByNameAttempt.Success)
{ {
if (HandleIEnumerableXElement(elementByNameAttempt.Result, out result)) if (HandleIEnumerableXElement(elementByNameAttempt.Result, out result))
@@ -208,8 +229,8 @@ namespace Umbraco.Core.Dynamics
} }
} }
//Ok, so no elements matched, so lets try attributes //Check if the name matches a node based on the BaseElement (which if the correct ctor is used, will be dash stripped)
var attributeByNameAttempt = CheckAttributeNameMatch(binder.Name, RawXmlElement, true); var attributeByNameAttempt = CheckAttributeNameMatch(binder.Name, BaseElement);
if (attributeByNameAttempt.Success) if (attributeByNameAttempt.Success)
{ {
if (attributeByNameAttempt.Result.Count() > 1) if (attributeByNameAttempt.Result.Count() > 1)
@@ -229,7 +250,13 @@ namespace Umbraco.Core.Dynamics
return base.TryGetMember(binder, out result); return base.TryGetMember(binder, out result);
} }
private Attempt<IEnumerable<string>> CheckAttributeNameMatch(string name, XElement xmlElement, bool checkCleanedName) /// <summary>
/// Checks if the 'name' matches any attributes of xmlElement
/// </summary>
/// <param name="name">The name to match</param>
/// <param name="xmlElement">The xml element to check against</param>
/// <returns></returns>
private static Attempt<IEnumerable<string>> CheckAttributeNameMatch(string name, XElement xmlElement)
{ {
var attributes = xmlElement.Attributes(name).Select(attr => attr.Value).ToArray(); var attributes = xmlElement.Attributes(name).Select(attr => attr.Value).ToArray();
if (attributes.Any()) if (attributes.Any())
@@ -248,15 +275,6 @@ namespace Umbraco.Core.Dynamics
} }
} }
if (checkCleanedName)
{
//still no match, we'll try to match with a 'cleaned' name
var cleanedXml = StrippedXmlElement;
//pass false in to this as we don't want an infinite loop and clean the already cleaned xml
return CheckAttributeNameMatch(name, cleanedXml, false);
}
//no deal //no deal
return Attempt<IEnumerable<string>>.False; return Attempt<IEnumerable<string>>.False;
} }
@@ -266,9 +284,8 @@ namespace Umbraco.Core.Dynamics
/// </summary> /// </summary>
/// <param name="name">The name to match</param> /// <param name="name">The name to match</param>
/// <param name="xmlElement">The xml element to check against</param> /// <param name="xmlElement">The xml element to check against</param>
/// <param name="checkCleanedName">If there are no matches, we'll clean the xml (i.e. remove hyphens, etc..) and then retry</param>
/// <returns></returns> /// <returns></returns>
private Attempt<IEnumerable<XElement>> CheckNodeNameMatch(string name, XElement xmlElement, bool checkCleanedName) private Attempt<IEnumerable<XElement>> CheckNodeNameMatch(string name, XElement xmlElement)
{ {
//Go ahead and try to fetch all of the elements matching the member name, and wrap them //Go ahead and try to fetch all of the elements matching the member name, and wrap them
var elements = xmlElement.Elements(name).ToArray(); var elements = xmlElement.Elements(name).ToArray();
@@ -290,15 +307,6 @@ namespace Umbraco.Core.Dynamics
} }
} }
if (checkCleanedName)
{
//still no match, we'll try to match with a 'cleaned' name
var cleanedXml = StrippedXmlElement;
//pass false in to this as we don't want an infinite loop and clean the already cleaned xml
return CheckNodeNameMatch(name, cleanedXml, false);
}
//no deal //no deal
return Attempt<IEnumerable<XElement>>.False; return Attempt<IEnumerable<XElement>>.False;
} }
@@ -336,23 +344,23 @@ namespace Umbraco.Core.Dynamics
} }
/// <summary> /// <summary>
/// Executes an XPath expression over the dash-stripped Xml /// Executes an XPath expression over the BaseElement object
/// </summary> /// </summary>
/// <param name="expression"></param> /// <param name="expression"></param>
/// <returns></returns> /// <returns></returns>
public DynamicXml XPath(string expression) public DynamicXml XPath(string expression)
{ {
var matched = StrippedXmlElement.XPathSelectElements(expression); var matched = BaseElement.XPathSelectElements(expression);
var root = new DynamicXml("<results/>"); var root = new DynamicXml("<results/>");
foreach (var element in matched) foreach (var element in matched)
{ {
root.StrippedXmlElement.Add(element); root.BaseElement.Add(element);
} }
return root; return root;
} }
/// <summary> /// <summary>
/// Return the string version of the dash-stripped Xml /// Return the string version of the BaseElement object
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
public override string ToString() public override string ToString()
@@ -366,23 +374,23 @@ namespace Umbraco.Core.Dynamics
} }
public DynamicXml Find(string expression) public DynamicXml Find(string expression)
{ {
return new DynamicXml(StrippedXmlElement.XPathSelectElements(expression).FirstOrDefault()); return new DynamicXml(BaseElement.XPathSelectElements(expression).FirstOrDefault());
} }
public DynamicXml Find(string attributeName, object value) public DynamicXml Find(string attributeName, object value)
{ {
string expression = string.Format("//*[{0}='{1}']", attributeName, value); string expression = string.Format("//*[{0}='{1}']", attributeName, value);
return new DynamicXml(StrippedXmlElement.XPathSelectElements(expression).FirstOrDefault()); return new DynamicXml(BaseElement.XPathSelectElements(expression).FirstOrDefault());
} }
IEnumerator<XElement> IEnumerable<XElement>.GetEnumerator() IEnumerator<XElement> IEnumerable<XElement>.GetEnumerator()
{ {
return StrippedXmlElement.Elements().GetEnumerator(); return BaseElement.Elements().GetEnumerator();
} }
public IEnumerator<DynamicXml> GetEnumerator() public IEnumerator<DynamicXml> GetEnumerator()
{ {
return StrippedXmlElement.Elements().Select(e => new DynamicXml(e)).GetEnumerator(); return BaseElement.Elements().Select(e => new DynamicXml(e)).GetEnumerator();
} }
IEnumerator IEnumerable.GetEnumerator() IEnumerator IEnumerable.GetEnumerator()
@@ -445,7 +453,7 @@ namespace Umbraco.Core.Dynamics
} }
public bool IsPosition(int index) public bool IsPosition(int index)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return false; return false;
} }
@@ -453,7 +461,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsPosition(int index, string valueIfTrue) public HtmlString IsPosition(int index, string valueIfTrue)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
@@ -461,7 +469,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsPosition(int index, string valueIfTrue, string valueIfFalse) public HtmlString IsPosition(int index, string valueIfTrue, string valueIfFalse)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
@@ -469,7 +477,7 @@ namespace Umbraco.Core.Dynamics
} }
public bool IsModZero(int modulus) public bool IsModZero(int modulus)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return false; return false;
} }
@@ -477,7 +485,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsModZero(int modulus, string valueIfTrue) public HtmlString IsModZero(int modulus, string valueIfTrue)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
@@ -485,7 +493,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsModZero(int modulus, string valueIfTrue, string valueIfFalse) public HtmlString IsModZero(int modulus, string valueIfTrue, string valueIfFalse)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
@@ -494,7 +502,7 @@ namespace Umbraco.Core.Dynamics
public bool IsNotModZero(int modulus) public bool IsNotModZero(int modulus)
{ {
if (StrippedXmlElement == null || StrippedXmlElement.Parent == null) if (BaseElement == null || BaseElement.Parent == null)
{ {
return false; return false;
} }
@@ -502,7 +510,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsNotModZero(int modulus, string valueIfTrue) public HtmlString IsNotModZero(int modulus, string valueIfTrue)
{ {
if (StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
@@ -510,7 +518,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsNotModZero(int modulus, string valueIfTrue, string valueIfFalse) public HtmlString IsNotModZero(int modulus, string valueIfTrue, string valueIfFalse)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
@@ -518,7 +526,7 @@ namespace Umbraco.Core.Dynamics
} }
public bool IsNotPosition(int index) public bool IsNotPosition(int index)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return false; return false;
} }
@@ -526,7 +534,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsNotPosition(int index, string valueIfTrue) public HtmlString IsNotPosition(int index, string valueIfTrue)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
@@ -534,7 +542,7 @@ namespace Umbraco.Core.Dynamics
} }
public HtmlString IsNotPosition(int index, string valueIfTrue, string valueIfFalse) public HtmlString IsNotPosition(int index, string valueIfTrue, string valueIfFalse)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
@@ -542,56 +550,56 @@ namespace Umbraco.Core.Dynamics
} }
public bool IsLast() public bool IsLast()
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return false; return false;
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return IsHelper(n => n.Index() == count - 1); return IsHelper(n => n.Index() == count - 1);
} }
public HtmlString IsLast(string valueIfTrue) public HtmlString IsLast(string valueIfTrue)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return IsHelper(n => n.Index() == count - 1, valueIfTrue); return IsHelper(n => n.Index() == count - 1, valueIfTrue);
} }
public HtmlString IsLast(string valueIfTrue, string valueIfFalse) public HtmlString IsLast(string valueIfTrue, string valueIfFalse)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return IsHelper(n => n.Index() == count - 1, valueIfTrue, valueIfFalse); return IsHelper(n => n.Index() == count - 1, valueIfTrue, valueIfFalse);
} }
public bool IsNotLast() public bool IsNotLast()
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return false; return false;
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return !IsHelper(n => n.Index() == count - 1); return !IsHelper(n => n.Index() == count - 1);
} }
public HtmlString IsNotLast(string valueIfTrue) public HtmlString IsNotLast(string valueIfTrue)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(string.Empty); return new HtmlString(string.Empty);
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return IsHelper(n => n.Index() != count - 1, valueIfTrue); return IsHelper(n => n.Index() != count - 1, valueIfTrue);
} }
public HtmlString IsNotLast(string valueIfTrue, string valueIfFalse) public HtmlString IsNotLast(string valueIfTrue, string valueIfFalse)
{ {
if (this.StrippedXmlElement == null || this.StrippedXmlElement.Parent == null) if (this.BaseElement == null || this.BaseElement.Parent == null)
{ {
return new HtmlString(valueIfFalse); return new HtmlString(valueIfFalse);
} }
int count = this.StrippedXmlElement.Parent.Elements().Count(); int count = this.BaseElement.Parent.Elements().Count();
return IsHelper(n => n.Index() != count - 1, valueIfTrue, valueIfFalse); return IsHelper(n => n.Index() != count - 1, valueIfTrue, valueIfFalse);
} }
public bool IsEven() public bool IsEven()
@@ -620,87 +628,87 @@ namespace Umbraco.Core.Dynamics
} }
public bool IsEqual(DynamicXml other) public bool IsEqual(DynamicXml other)
{ {
return IsHelper(n => n.StrippedXmlElement == other.StrippedXmlElement); return IsHelper(n => n.BaseElement == other.BaseElement);
} }
public HtmlString IsEqual(DynamicXml other, string valueIfTrue) public HtmlString IsEqual(DynamicXml other, string valueIfTrue)
{ {
return IsHelper(n => n.StrippedXmlElement == other.StrippedXmlElement, valueIfTrue); return IsHelper(n => n.BaseElement == other.BaseElement, valueIfTrue);
} }
public HtmlString IsEqual(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsEqual(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
return IsHelper(n => n.StrippedXmlElement == other.StrippedXmlElement, valueIfTrue, valueIfFalse); return IsHelper(n => n.BaseElement == other.BaseElement, valueIfTrue, valueIfFalse);
} }
public bool IsNotEqual(DynamicXml other) public bool IsNotEqual(DynamicXml other)
{ {
return IsHelper(n => n.StrippedXmlElement != other.StrippedXmlElement); return IsHelper(n => n.BaseElement != other.BaseElement);
} }
public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue) public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue)
{ {
return IsHelper(n => n.StrippedXmlElement != other.StrippedXmlElement, valueIfTrue); return IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue);
} }
public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
return IsHelper(n => n.StrippedXmlElement != other.StrippedXmlElement, valueIfTrue, valueIfFalse); return IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue, valueIfFalse);
} }
public bool IsDescendant(DynamicXml other) public bool IsDescendant(DynamicXml other)
{ {
var ancestors = this.Ancestors(); var ancestors = this.Ancestors();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null);
} }
public HtmlString IsDescendant(DynamicXml other, string valueIfTrue) public HtmlString IsDescendant(DynamicXml other, string valueIfTrue)
{ {
var ancestors = this.Ancestors(); var ancestors = this.Ancestors();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue);
} }
public HtmlString IsDescendant(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsDescendant(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
var ancestors = this.Ancestors(); var ancestors = this.Ancestors();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue, valueIfFalse); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
} }
public bool IsDescendantOrSelf(DynamicXml other) public bool IsDescendantOrSelf(DynamicXml other)
{ {
var ancestors = this.AncestorsOrSelf(); var ancestors = this.AncestorsOrSelf();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null);
} }
public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue) public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue)
{ {
var ancestors = this.AncestorsOrSelf(); var ancestors = this.AncestorsOrSelf();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue);
} }
public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
var ancestors = this.AncestorsOrSelf(); var ancestors = this.AncestorsOrSelf();
return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue, valueIfFalse); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
} }
public bool IsAncestor(DynamicXml other) public bool IsAncestor(DynamicXml other)
{ {
var descendants = this.Descendants(); var descendants = this.Descendants();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null);
} }
public HtmlString IsAncestor(DynamicXml other, string valueIfTrue) public HtmlString IsAncestor(DynamicXml other, string valueIfTrue)
{ {
var descendants = this.Descendants(); var descendants = this.Descendants();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue);
} }
public HtmlString IsAncestor(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsAncestor(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
var descendants = this.Descendants(); var descendants = this.Descendants();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue, valueIfFalse); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
} }
public bool IsAncestorOrSelf(DynamicXml other) public bool IsAncestorOrSelf(DynamicXml other)
{ {
var descendants = this.DescendantsOrSelf(); var descendants = this.DescendantsOrSelf();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null);
} }
public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue) public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue)
{ {
var descendants = this.DescendantsOrSelf(); var descendants = this.DescendantsOrSelf();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue);
} }
public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse) public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
{ {
var descendants = this.DescendantsOrSelf(); var descendants = this.DescendantsOrSelf();
return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.StrippedXmlElement == other.StrippedXmlElement) != null, valueIfTrue, valueIfFalse); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
} }
public IEnumerable<DynamicXml> Descendants() public IEnumerable<DynamicXml> Descendants()
{ {
@@ -708,7 +716,7 @@ namespace Umbraco.Core.Dynamics
} }
public IEnumerable<DynamicXml> Descendants(Func<XElement, bool> func) public IEnumerable<DynamicXml> Descendants(Func<XElement, bool> func)
{ {
var flattenedNodes = this.StrippedXmlElement.Elements().Map(func, n => n.Elements()); var flattenedNodes = this.BaseElement.Elements().Map(func, n => n.Elements());
return flattenedNodes.ToList().ConvertAll(n => new DynamicXml(n)); return flattenedNodes.ToList().ConvertAll(n => new DynamicXml(n));
} }
public IEnumerable<DynamicXml> DescendantsOrSelf() public IEnumerable<DynamicXml> DescendantsOrSelf()
@@ -717,7 +725,7 @@ namespace Umbraco.Core.Dynamics
} }
public IEnumerable<DynamicXml> DescendantsOrSelf(Func<XElement, bool> func) public IEnumerable<DynamicXml> DescendantsOrSelf(Func<XElement, bool> func)
{ {
var flattenedNodes = this.StrippedXmlElement.Elements().Map(func, n => n.Elements()); var flattenedNodes = this.BaseElement.Elements().Map(func, n => n.Elements());
var list = new List<DynamicXml>(); var list = new List<DynamicXml>();
list.Add(this); list.Add(this);
list.AddRange(flattenedNodes.ToList().ConvertAll(n => new DynamicXml(n))); list.AddRange(flattenedNodes.ToList().ConvertAll(n => new DynamicXml(n)));
@@ -730,14 +738,14 @@ namespace Umbraco.Core.Dynamics
public IEnumerable<DynamicXml> Ancestors(Func<XElement, bool> func) public IEnumerable<DynamicXml> Ancestors(Func<XElement, bool> func)
{ {
var ancestorList = new List<XElement>(); var ancestorList = new List<XElement>();
var node = this.StrippedXmlElement; var node = this.BaseElement;
while (node != null) while (node != null)
{ {
if (node.Parent == null) break; if (node.Parent == null) break;
XElement parent = node.Parent; XElement parent = node.Parent;
if (parent != null) if (parent != null)
{ {
if (this.StrippedXmlElement != parent) if (this.BaseElement != parent)
{ {
node = parent; node = parent;
if (func(node)) if (func(node))
@@ -765,7 +773,7 @@ namespace Umbraco.Core.Dynamics
public IEnumerable<DynamicXml> AncestorsOrSelf(Func<XElement, bool> func) public IEnumerable<DynamicXml> AncestorsOrSelf(Func<XElement, bool> func)
{ {
List<XElement> ancestorList = new List<XElement>(); List<XElement> ancestorList = new List<XElement>();
var node = this.StrippedXmlElement; var node = this.BaseElement;
ancestorList.Add(node); ancestorList.Add(node);
while (node != null) while (node != null)
{ {
@@ -773,7 +781,7 @@ namespace Umbraco.Core.Dynamics
XElement parent = node.Parent; XElement parent = node.Parent;
if (parent != null) if (parent != null)
{ {
if (this.StrippedXmlElement != parent) if (this.BaseElement != parent)
{ {
node = parent; node = parent;
if (func(node)) if (func(node))
@@ -797,13 +805,13 @@ namespace Umbraco.Core.Dynamics
public int Index() public int Index()
{ {
if (this.StrippedXmlElement != null && this.StrippedXmlElement.Parent != null) if (this.BaseElement != null && this.BaseElement.Parent != null)
{ {
var elements = this.StrippedXmlElement.Parent.Elements(); var elements = this.BaseElement.Parent.Elements();
int index = 0; int index = 0;
foreach (var element in elements) foreach (var element in elements)
{ {
if (element == this.StrippedXmlElement) break; if (element == this.BaseElement) break;
index++; index++;
} }
return index; return index;

View File

@@ -100,7 +100,7 @@ namespace Umbraco.Core.Dynamics
//XElement //XElement
if (TypeHelper.IsTypeAssignableFrom<XElement>(destinationType)) if (TypeHelper.IsTypeAssignableFrom<XElement>(destinationType))
{ {
return dxml.StrippedXmlElement; return dxml.BaseElement;
} }
//XmlElement //XmlElement
if (TypeHelper.IsTypeAssignableFrom<XmlElement>(destinationType)) if (TypeHelper.IsTypeAssignableFrom<XmlElement>(destinationType))

View File

@@ -14,7 +14,9 @@ namespace Umbraco.Tests.PublishedContent
public void Convert_To_Raw_String() public void Convert_To_Raw_String()
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(
XmlHelper.StripDashesInElementOrAttributeNames(xml),
xml);
var result = dXml.TryConvertTo<RawXmlString>(); var result = dXml.TryConvertTo<RawXmlString>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(xml, result.Result.Value); Assert.AreEqual(xml, result.Result.Value);
@@ -24,7 +26,9 @@ namespace Umbraco.Tests.PublishedContent
public void Convert_To_Raw_XElement() public void Convert_To_Raw_XElement()
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(
XmlHelper.StripDashesInElementOrAttributeNames(xml),
xml);
var result = dXml.TryConvertTo<RawXElement>(); var result = dXml.TryConvertTo<RawXElement>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(xml, result.Result.Value.ToString(SaveOptions.DisableFormatting)); Assert.AreEqual(xml, result.Result.Value.ToString(SaveOptions.DisableFormatting));
@@ -34,7 +38,9 @@ namespace Umbraco.Tests.PublishedContent
public void Convert_To_Raw_XmlElement() public void Convert_To_Raw_XmlElement()
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(
XmlHelper.StripDashesInElementOrAttributeNames(xml),
xml);
var result = dXml.TryConvertTo<RawXmlElement>(); var result = dXml.TryConvertTo<RawXmlElement>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(xml, result.Result.Value.OuterXml); Assert.AreEqual(xml, result.Result.Value.OuterXml);
@@ -44,7 +50,9 @@ namespace Umbraco.Tests.PublishedContent
public void Convert_To_Raw_XmlDocument() public void Convert_To_Raw_XmlDocument()
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(
XmlHelper.StripDashesInElementOrAttributeNames(xml),
xml);
var result = dXml.TryConvertTo<RawXmlDocument>(); var result = dXml.TryConvertTo<RawXmlDocument>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(xml, result.Result.Value.InnerXml); Assert.AreEqual(xml, result.Result.Value.InnerXml);
@@ -55,10 +63,9 @@ namespace Umbraco.Tests.PublishedContent
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(xml);
var strippedXml = dXml.ToXml();
var result = dXml.TryConvertTo<string>(); var result = dXml.TryConvertTo<string>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(strippedXml, result.Result); Assert.AreEqual(xml, result.Result);
} }
[Test] [Test]
@@ -66,10 +73,9 @@ namespace Umbraco.Tests.PublishedContent
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(xml);
var strippedXml = dXml.ToXml();
var result = dXml.TryConvertTo<XElement>(); var result = dXml.TryConvertTo<XElement>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(strippedXml, result.Result.ToString(SaveOptions.DisableFormatting)); Assert.AreEqual(xml, result.Result.ToString(SaveOptions.DisableFormatting));
} }
[Test] [Test]
@@ -77,10 +83,9 @@ namespace Umbraco.Tests.PublishedContent
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(xml);
var strippedXml = dXml.ToXml();
var result = dXml.TryConvertTo<XmlElement>(); var result = dXml.TryConvertTo<XmlElement>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(strippedXml, result.Result.OuterXml); Assert.AreEqual(xml, result.Result.OuterXml);
} }
[Test] [Test]
@@ -88,10 +93,9 @@ namespace Umbraco.Tests.PublishedContent
{ {
var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>"; var xml = "<DAMP fullMedia=\"\" test-attribute=\"someValue\"><mediaItem><Image id=\"1057\" version=\"d58d5c16-153e-4896-892f-a722e45a69af\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:55:29\" updateDate=\"2012-11-05T16:55:44\" nodeName=\"test12\" urlName=\"test12\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1057\"><umbracoFile>/media/54/tulips.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>620888</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:55:34\"><crop name=\"thumbCrop\" x=\"154\" y=\"1\" x2=\"922\" y2=\"768\" url=\"/media/54/tulips_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem><mediaItem><Image id=\"1055\" version=\"4df1f08a-3552-45f2-b4bf-fa980c762f4a\" parentID=\"-1\" level=\"1\" writerID=\"0\" nodeType=\"1032\" template=\"0\" sortOrder=\"1\" createDate=\"2012-11-05T16:29:58\" updateDate=\"2012-11-05T16:30:27\" nodeName=\"Test\" urlName=\"test\" writerName=\"admin\" nodeTypeAlias=\"Image\" path=\"-1,1055\"><umbracoFile>/media/41/hydrangeas.jpg</umbracoFile><umbracoWidth>1024</umbracoWidth><umbracoHeight>768</umbracoHeight><umbracoBytes>595284</umbracoBytes><umbracoExtension>jpg</umbracoExtension><newsCrops><crops date=\"2012-11-05T16:30:18\"><crop name=\"thumbCrop\" x=\"133\" y=\"0\" x2=\"902\" y2=\"768\" url=\"/media/41/hydrangeas_thumbCrop.jpg\" /></crops></newsCrops></Image></mediaItem></DAMP>";
var dXml = new DynamicXml(xml); var dXml = new DynamicXml(xml);
var strippedXml = dXml.ToXml();
var result = dXml.TryConvertTo<XmlDocument>(); var result = dXml.TryConvertTo<XmlDocument>();
Assert.IsTrue(result.Success); Assert.IsTrue(result.Success);
Assert.AreEqual(strippedXml, result.Result.InnerXml); Assert.AreEqual(xml, result.Result.InnerXml);
} }
public override void TestSetup() public override void TestSetup()

View File

@@ -2,6 +2,7 @@ using System;
using System.Diagnostics; using System.Diagnostics;
using Microsoft.CSharp.RuntimeBinder; using Microsoft.CSharp.RuntimeBinder;
using NUnit.Framework; using NUnit.Framework;
using Umbraco.Core;
using Umbraco.Core.Dynamics; using Umbraco.Core.Dynamics;
using System.Linq; using System.Linq;
@@ -27,7 +28,9 @@ namespace Umbraco.Tests.PublishedContent
</url-picker> </url-picker>
</banner1Link>"; </banner1Link>";
var typedXml = new DynamicXml(xml); var typedXml = new DynamicXml(
XmlHelper.StripDashesInElementOrAttributeNames(xml),
xml);
dynamic dynamicXml = typedXml; dynamic dynamicXml = typedXml;
var typedElement = typedXml.RawXmlElement.Element("url-picker"); var typedElement = typedXml.RawXmlElement.Element("url-picker");
@@ -65,7 +68,7 @@ namespace Umbraco.Tests.PublishedContent
//we haven't explicitly defined ElementAt so this will dynamically invoke this method //we haven't explicitly defined ElementAt so this will dynamically invoke this method
var element = dynamicXml.ElementAt(0); var element = dynamicXml.ElementAt(0);
Assert.AreEqual("1057", Enumerable.First(element.StrippedXmlElement.Elements()).Attribute("id").Value); Assert.AreEqual("1057", Enumerable.First(element.BaseElement.Elements()).Attribute("id").Value);
} }
[Test] [Test]
@@ -96,8 +99,8 @@ namespace Umbraco.Tests.PublishedContent
Assert.AreEqual(1, typedTaken.Count()); Assert.AreEqual(1, typedTaken.Count());
Assert.AreEqual(1, Enumerable.Count(dynamicTaken)); Assert.AreEqual(1, Enumerable.Count(dynamicTaken));
Assert.AreEqual("1057", typedTaken.ElementAt(0).StrippedXmlElement.Elements().First().Attribute("id").Value); Assert.AreEqual("1057", typedTaken.ElementAt(0).BaseElement.Elements().First().Attribute("id").Value);
Assert.AreEqual("1057", Enumerable.First(Enumerable.ElementAt(dynamicTaken, 0).StrippedXmlElement.Elements()).Attribute("id").Value); Assert.AreEqual("1057", Enumerable.First(Enumerable.ElementAt(dynamicTaken, 0).BaseElement.Elements()).Attribute("id").Value);
} }
[Test] [Test]

View File

@@ -12,7 +12,7 @@ namespace umbraco.MacroEngines
{ {
if (result is Umbraco.Core.Dynamics.DynamicXml) if (result is Umbraco.Core.Dynamics.DynamicXml)
{ {
result = new DynamicXml(((Umbraco.Core.Dynamics.DynamicXml)result).StrippedXmlElement); result = new DynamicXml(((Umbraco.Core.Dynamics.DynamicXml)result).BaseElement);
} }
else if (result is Umbraco.Core.Dynamics.DynamicNull) else if (result is Umbraco.Core.Dynamics.DynamicNull)
{ {