/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the general * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the general description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with "NA" for both the national and possible number patterns. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc ProcessPhoneNumberDescElement(PhoneNumberDesc generalDesc, XElement countryElement, String numberType, bool liteBuild) { if (generalDesc == null) { generalDesc = new PhoneNumberDesc.Builder().Build(); } var phoneNumberDescList = countryElement.GetElementsByTagName(numberType); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Length == 0 && !IsValidNumberType(numberType)) { numberDesc.SetNationalNumberPattern("NA"); numberDesc.SetPossibleNumberPattern("NA"); return(numberDesc.Build()); } numberDesc.MergeFrom(generalDesc); if (phoneNumberDescList.Length > 0) { XElement element = phoneNumberDescList[0]; var possiblePattern = element.GetElementsByTagName(POSSIBLE_NUMBER_PATTERN); if (possiblePattern.Length > 0) { numberDesc.SetPossibleNumberPattern(ValidateRE(possiblePattern[0].Value, true)); } var validPattern = element.GetElementsByTagName(NATIONAL_NUMBER_PATTERN); if (validPattern.Length > 0) { numberDesc.SetNationalNumberPattern(ValidateRE(validPattern[0].Value, true)); } if (!liteBuild) { var exampleNumber = element.GetElementsByTagName(EXAMPLE_NUMBER); if (exampleNumber.Length > 0) { numberDesc.SetExampleNumber(exampleNumber[0].Value); } } } return(numberDesc.Build()); }
/** * Processes a phone number description element from the XML file and returns it as a * PhoneNumberDesc. If the description element is a fixed line or mobile number, the general * description will be used to fill in the whole element if necessary, or any components that are * missing. For all other types, the general description will only be used to fill in missing * components if the type has a partial definition. For example, if no "tollFree" element exists, * we assume there are no toll free numbers for that locale, and return a phone number description * with "NA" for both the national and possible number patterns. * * @param generalDesc a generic phone number description that will be used to fill in missing * parts of the description * @param countryElement the XML element representing all the country information * @param numberType the name of the number type, corresponding to the appropriate tag in the XML * file with information about that type * @return complete description of that phone number type */ public static PhoneNumberDesc ProcessPhoneNumberDescElement(PhoneNumberDesc generalDesc, XmlElement countryElement, String numberType, bool liteBuild) { if (generalDesc == null) generalDesc = new PhoneNumberDesc.Builder().Build(); var phoneNumberDescList = countryElement.GetElementsByTagName(numberType); var numberDesc = new PhoneNumberDesc.Builder(); if (phoneNumberDescList.Count == 0 && !IsValidNumberType(numberType)) { numberDesc.SetNationalNumberPattern("NA"); numberDesc.SetPossibleNumberPattern("NA"); return numberDesc.Build(); } numberDesc.MergeFrom(generalDesc); if (phoneNumberDescList.Count > 0) { XmlElement element = (XmlElement)phoneNumberDescList[0]; var possiblePattern = element.GetElementsByTagName(POSSIBLE_NUMBER_PATTERN); if (possiblePattern.Count > 0) numberDesc.SetPossibleNumberPattern(ValidateRE(possiblePattern[0].InnerText, true)); var validPattern = element.GetElementsByTagName(NATIONAL_NUMBER_PATTERN); if (validPattern.Count > 0) numberDesc.SetNationalNumberPattern(ValidateRE(validPattern[0].InnerText, true)); if (!liteBuild) { var exampleNumber = element.GetElementsByTagName(EXAMPLE_NUMBER); if (exampleNumber.Count > 0) numberDesc.SetExampleNumber(exampleNumber[0].InnerText); } } return numberDesc.Build(); }