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); }
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); }
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); }
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); }
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)); }
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 HtmlString IsEqual(DynamicXml other, string valueIfTrue) { return IsHelper(n => n.BaseElement == other.BaseElement, valueIfTrue); }
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)); }
public bool IsAncestorOrSelf(DynamicXml other) { var descendants = this.DescendantsOrSelf(); return(IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null)); }
public bool IsDescendantOrSelf(DynamicXml other) { var ancestors = this.AncestorsOrSelf(); return(IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null)); }
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)); }
public bool IsNotEqual(DynamicXml other) { return(IsHelper(n => n.BaseElement != other.BaseElement)); }
public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse) { return(IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue, valueIfFalse)); }
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; }
public bool IsNotEqual(DynamicXml other) { return IsHelper(n => n.BaseElement != other.BaseElement); }
public HtmlString IsNotEqual(DynamicXml other, string valueIfTrue, string valueIfFalse) { return IsHelper(n => n.BaseElement != other.BaseElement, valueIfTrue, valueIfFalse); }
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); }
public bool IsDescendantOrSelf(DynamicXml other) { var ancestors = this.AncestorsOrSelf(); return IsHelper(n => ancestors.FirstOrDefault(ancestor => ancestor.BaseElement == other.BaseElement) != null); }
public bool IsAncestorOrSelf(DynamicXml other) { var descendants = this.DescendantsOrSelf(); return IsHelper(n => descendants.FirstOrDefault(descendant => descendant.BaseElement == other.BaseElement) != null); }
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); }