public void Deals_With_Hyphenated_values()
        {
            var xml = @"<banner1Link>
  <url-picker some-attribute='Content'>
    <new-window>True</new-window>
    <node-id>1161</node-id>
    <url>/content/</url>
    <link-title>12 december Zorgbeurs Care</link-title>
  </url-picker>
</banner1Link>";

            var typedXml = new DynamicXml(
                XmlHelper.StripDashesInElementOrAttributeNames(xml),
                xml);
            dynamic dynamicXml = typedXml;

            var typedElement = typedXml.RawXmlElement.Element("url-picker");
            var dynamicElementByCleanedName = dynamicXml.urlpicker;

            Assert.IsNotNull(typedElement);
            Assert.IsNotNull(dynamicElementByCleanedName);

            Assert.AreEqual(
                typedElement.Attribute("some-attribute").Value,
                dynamicElementByCleanedName.someattribute);            
        }
Exemple #2
0
        private bool HandleIEnumerableXElement(IEnumerable <XElement> elements, out object result)
        {
            //Get the count now, so we don't have to call it twice
            int count = elements.Count();

            if (count > 0)
            {
                var firstElement = elements.FirstOrDefault();
                //we have a single element, does it have any children?
                if (firstElement != null && firstElement.Elements().Count() == 0 && !firstElement.HasAttributes)
                {
                    //no, return the text
                    result = firstElement.Value;
                    return(true);
                }
                else
                {
                    //We have more than one matching element, so let's return the collection
                    //elements is IEnumerable<DynamicXml>
                    //but we want to be able to re-enter this code
                    XElement root = new XElement(XName.Get("root"));
                    root.Add(elements);
                    result = new DynamicXml(root);

                    //From here, you'll either end up back here (because you have <root><node><node>)
                    //or you use [] indexing and you end up with a single element
                    return(true);
                }
            }
            result = null;
            return(false);
        }
 public void Convert_To_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 dXml = new DynamicXml(xml);
     var result = dXml.TryConvertTo<XmlElement>();
     Assert.IsTrue(result.Success);
     Assert.AreEqual(xml, result.Result.OuterXml);
 }
Exemple #4
0
        public DynamicXml XPath(string expression)
        {
            var        matched = this.BaseElement.XPathSelectElements(expression);
            DynamicXml root    = new DynamicXml("<results/>");

            foreach (var element in matched)
            {
                root.BaseElement.Add(element);
            }
            return(root);
        }
Exemple #5
0
 public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
 {
     int index = 0;
     if (indexes.Length > 0)
     {
         index = (int)indexes[0];
         result = new DynamicXml(this.BaseElement.Elements().ToList()[index]);
         return true;
     }
     return base.TryGetIndex(binder, indexes, out result);
 }
		public void Custom_Extension_Method()
		{
			var xml = "<DAMP fullMedia=\"\"><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 typedXml = new DynamicXml(xml);
			
			dynamic dynamicXml = typedXml;

			//we haven't explicitly defined ElementAt so this will dynamically invoke this method
			var element = dynamicXml.ElementAt(0);

            Assert.AreEqual("1057", Enumerable.First(element.BaseElement.Elements()).Attribute("id").Value);
		}
Exemple #7
0
        public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result)
        {
            int index = 0;

            if (indexes.Length > 0)
            {
                index  = (int)indexes[0];
                result = new DynamicXml(this.BaseElement.Elements().ToList()[index]);
                return(true);
            }
            return(base.TryGetIndex(binder, indexes, out result));
        }
Exemple #8
0
        private bool HandleIEnumerableXElement(IEnumerable<XElement> elements, out object result)
        {
            //Get the count now, so we don't have to call it twice
            int count = elements.Count();
            if (count > 0)
            {
                var firstElement = elements.FirstOrDefault();
                //we have a single element, does it have any children?
                if (firstElement != null && firstElement.Elements().Count() == 0 && !firstElement.HasAttributes)
                {
                    //no, return the text
                    result = firstElement.Value;
                    return true;
                }
                else
                {
                    //We have more than one matching element, so let's return the collection
                    //elements is IEnumerable<DynamicXml>
                    //but we want to be able to re-enter this code
                    XElement root = new XElement(XName.Get("root"));
                    root.Add(elements);
                    result = new DynamicXml(root);

                    //From here, you'll either end up back here (because you have <root><node><node>)
                    //or you use [] indexing and you end up with a single element
                    return true;
                }
            }
            result = null;
            return false;
        }
Exemple #9
0
 public HtmlString IsEqual(DynamicXml other, string valueIfTrue)
 {
     return IsHelper(n => n.BaseElement == other.BaseElement, valueIfTrue);
 }
Exemple #10
0
        public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
        {
            var descendants = this.DescendantsOrSelf();

            return(IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse));
        }
Exemple #11
0
        public bool IsAncestorOrSelf(DynamicXml other)
        {
            var descendants = this.DescendantsOrSelf();

            return(IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null));
        }
Exemple #12
0
        public bool IsDescendantOrSelf(DynamicXml other)
        {
            var ancestors = this.AncestorsOrSelf();

            return(IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null));
        }
Exemple #13
0
        public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
        {
            var ancestors = this.AncestorsOrSelf();

            return(IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse));
        }
Exemple #14
0
 public bool IsNotEqual(DynamicXml other)
 {
     return(IsHelper(n => n.BaseElement != other.BaseElement));
 }
Exemple #15
0
 public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse)
 {
     return(IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue, valueIfFalse));
 }
Exemple #16
0
 public DynamicXml XPath(string expression)
 {
     var matched = this.BaseElement.XPathSelectElements(expression);
     DynamicXml root = new DynamicXml("<results/>");
     foreach (var element in matched)
     {
         root.BaseElement.Add(element);
     }
     return root;
 }
Exemple #17
0
 public bool IsNotEqual(DynamicXml other)
 {
     return IsHelper(n => n.BaseElement != other.BaseElement);
 }
Exemple #18
0
 public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse)
 {
     return IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue, valueIfFalse);
 }
Exemple #19
0
        public HtmlString IsAncestorOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
        {
            var descendants = this.DescendantsOrSelf();
			return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
        }
Exemple #20
0
        public bool IsDescendantOrSelf(DynamicXml other)
        {
            var ancestors = this.AncestorsOrSelf();
			return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null);
        }
Exemple #21
0
        public bool IsAncestorOrSelf(DynamicXml other)
        {
            var descendants = this.DescendantsOrSelf();
			return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null);
        }
Exemple #22
0
        public HtmlString IsDescendantOrSelf(DynamicXml other, string valueIfTrue, string valueIfFalse)
        {
            var ancestors = this.AncestorsOrSelf();
			return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null, valueIfTrue, valueIfFalse);
        }