public void FromJson(JObject obj) { foreach (var property in obj) { if (property.Key == "@language") { Language = property.Value.Value <string>(); continue; } if (property.Key == "@base") { Base = property.Value.Value <string>(); continue; } if (property.Key == "@vocab") { Vocab = property.Value.Value <string>(); continue; } if (property.Key == "@version") { Version = property.Value.Value <string>(); continue; } Terms.Add(property.Key, TermDefinition.FromJson(property.Value)); } }
public static TermDefinition FromJson(JToken token) { var result = new TermDefinition(); if (token is JObject obj) { if (obj.TryGetValue("@id", out var idValue)) { result.Id = idValue.Value <string>(); } if (obj.TryGetValue("@type", out var typeValue)) { result.Type = typeValue.Value <string>(); } if (obj.TryGetValue("@container", out var containerValue)) { result.Container = containerValue.Value <string>(); } } else if (token is JValue value) { result.Id = value.Value <string>(); } return(result); }
private TermDefinition ParseToTermDefinition(HtmlNode defHeaderNode, string url) { TermDefinition termDefinition = null; if (defHeaderNode == null) { return(termDefinition); } var word = WebUtility.HtmlDecode(defHeaderNode.SelectSingleNode("//div[@class = 'def-header']/a[@class = 'word']").InnerText); var meaning = WebUtility.HtmlDecode(defHeaderNode.SelectSingleNode("//div[@class = 'meaning']").InnerText); var example = WebUtility.HtmlDecode(defHeaderNode.SelectSingleNode("//div[@class = 'example']").InnerText); var author = WebUtility.HtmlDecode(defHeaderNode.SelectSingleNode("//div[@class = 'contributor']/a").InnerText); var authorUrl = "https://www.urbandictionary.com" + WebUtility.HtmlDecode(defHeaderNode.SelectSingleNode("//div[@class = 'contributor']/a").Attributes["href"].Value); termDefinition = new TermDefinition() { Word = word, Meaning = meaning, Example = example, Author = author, AuthorUrl = authorUrl, SourceUrl = url }; return(termDefinition); }