/// <summary> /// Searches for all identifier declarations into the given axml. /// </summary> /// <returns>The declarations.</returns> /// <param name="element">Element.</param> public static ViewPropertyDeclaration[] ParseDeclarations(XElement element, ITypeMapper mapper) { var result = new List <ViewPropertyDeclaration>(); var idatt = element.Attribute(AndroidNamespace + "id"); if (idatt != null && idatt.Value.StartsWith(IdPrefix, StringComparison.Ordinal)) { var isInclude = element.Name.LocalName == "include"; var id = idatt.Value.Substring(IdPrefix.Length); string type = null; if (isInclude) { var layoutatt = element.Attribute("layout"); type = LayoutHolderGenerator.CreateClassName(layoutatt.Value.Replace("@layout/", "")); } else { type = mapper.Get(element); } var source = idatt.Value; var lineinfo = element as IXmlLineInfo; var line = lineinfo?.LineNumber.ToString() ?? "?"; result.Add(new ViewPropertyDeclaration(type, id, source, line, isInclude)); } foreach (var child in element.Elements()) { var childDeclarations = ParseDeclarations(child, mapper); result.AddRange(childDeclarations); } return(result.ToArray()); }