public override bool TryGetMember(GetMemberBinder binder, out object result) { result = null; switch (binder.Name) { case "Value": result = _elements[0].Value; break; case "Count": result = _elements.Count; break; default: var attr = _elements[0].Attribute(XName.Get(binder.Name)); if (attr == null) { var items = _elements.Descendants(XName.Get(binder.Name)); if (items == null || items.Count() == 0) return false; result = new DynamicXmlParser(items); break; } result = attr; break; } return true; }
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) { var ndx = (int)indexes[0]; result = new DynamicXmlParser(_elements[ndx]); return(true); }
public override bool TryGetMember(GetMemberBinder binder, out object result) { result = null; switch (binder.Name) { case "Value": result = _elements[0].Value; break; case "Count": result = _elements.Count; break; default: var attr = _elements[0].Attribute(XName.Get(binder.Name)); if (attr == null) { var items = _elements.Descendants(XName.Get(binder.Name)); if (items == null || items.Count() == 0) { return(false); } result = new DynamicXmlParser(items); break; } result = attr; break; } return(true); }
public void Can_deal_with_xml() { string xml = "<books><book id='1'><name>Book with 2 authors</name><authors><author id='1'>Billy</author></authors></book><book id='2'><name>The Bobbit</name></book></books>"; dynamic dx = new DynamicXmlParser(xml); var condition = dx.book[1].name[0].Value; Assert.That(condition, Is.EqualTo("The Bobbit")); }
public void Can_get_an_artists_releases() { const string endpoint = "artist/releases"; var endPointInfo = new EndPointInfo { Uri = endpoint, Parameters = new NameValueCollection { { "artistId", "1" } } }; string xml = _endpointResolver.GetRawXml(endPointInfo); dynamic dx = new DynamicXmlParser(xml); var name = dx.releases.release[0].title.Value; var secondName = dx.releases.release[1].title.Value; Assert.That(name, Is.EqualTo("Night Train")); Assert.That(secondName, Is.EqualTo("Crystal Ball")); }
public void Can_get_an_artist() { const string endpoint = "artist/details"; var endPointInfo = new EndPointInfo {Uri = endpoint, Parameters = new NameValueCollection{{"artistId", "1"}}}; string xml = _endpointResolver.GetRawXml(endPointInfo); dynamic dx = new DynamicXmlParser(xml); var name = dx.artist[0].name.Value; var sortName = dx.artist[0].sortName.Value; var url = dx.artist[0].url.Value; Assert.That(name, Is.EqualTo("Keane")); Assert.That(sortName, Is.EqualTo("Keane")); Assert.That(url, Is.StringStarting("http://www.7digital.com/artists/keane/")); }
public override bool TryGetIndex(GetIndexBinder binder, object[] indexes, out object result) { var ndx = (int)indexes[0]; result = new DynamicXmlParser(_elements[ndx]); return true; }