private static IEnumerable <TelefoneNumber> ParseTelefoneNumbers(HtmlElement numbers) { if (string.IsNullOrWhiteSpace(numbers.InnerText)) { yield break; } var lines = numbers.InnerText.SplitByNewLine().Select(s => s.ToLower()); TelefoneNumber.TelefoneNumberType telefoneNumberType = TelefoneNumber.TelefoneNumberType.Telefon; foreach (var line in lines) { if (string.IsNullOrWhiteSpace(line)) { continue; } if (string.Equals(line, "Telefon:", StringComparison.InvariantCultureIgnoreCase)) { telefoneNumberType = TelefoneNumber.TelefoneNumberType.Telefon; continue; } if (string.Equals(line, "Fax:", StringComparison.InvariantCultureIgnoreCase)) { telefoneNumberType = TelefoneNumber.TelefoneNumberType.Fax; continue; } if (string.Equals(line, "Mobil:", StringComparison.InvariantCultureIgnoreCase)) { telefoneNumberType = TelefoneNumber.TelefoneNumberType.Mobil; continue; } if (string.Equals(line, "Webseite:", StringComparison.InvariantCultureIgnoreCase)) { telefoneNumberType = TelefoneNumber.TelefoneNumberType.Webseite; continue; } Debug.Assert(!line.Trim().EndsWith(":")); if (telefoneNumberType == TelefoneNumber.TelefoneNumberType.Webseite) { yield return(new TelefoneNumber { Number = line, Type = telefoneNumberType }); } else { var telefoneNumber = ParseTelefoneNumber(line.Trim()); telefoneNumber.Type = telefoneNumberType; yield return(telefoneNumber); } } }
private void ParseContact(Office office, HtmlNode officeContactNode) { var children = officeContactNode.ChildNodes.Where(n => n.HasInnerText()).ToArray(); foreach (var child in children) { var entry = child.Descendants("span").Select(n => n.GetDecodedInnerText().TrimWhiteSpace()).ToArray(); Assert(entry.Length >= 2); TelefoneNumber.TelefoneNumberType type = GetContactType(entry[0]); foreach (var contactRow in entry.Skip(1)) { var telefoneNumber = new TelefoneNumber { Number = contactRow, Type = type }; office.TelefoneNumbers.Add(telefoneNumber); } } }
public string TranslateContactType(TelefoneNumber.TelefoneNumberType telefoneNumberType) { switch (telefoneNumberType) { case TelefoneNumber.TelefoneNumberType.Mobil: return(GetString("mobile")); case TelefoneNumber.TelefoneNumberType.Fax: return(GetString("fax")); case TelefoneNumber.TelefoneNumberType.Telefon: return(GetString("phone")); case TelefoneNumber.TelefoneNumberType.Webseite: return(GetString("website")); default: throw new ArgumentOutOfRangeException(nameof(telefoneNumberType), telefoneNumberType, null); } }