private static void LoadXmlRoot(XDocument doc, VisualTreeAsset vta, StyleSheetBuilder ssb) { XElement root = doc.Root; if (!string.Equals(root.Name.LocalName, "UXML", StringComparison.InvariantCulture)) { UIElementsViewImporter.logger.LogError(ImportErrorType.Semantic, ImportErrorCode.InvalidRootElement, root.Name, UIElementsViewImporter.Error.Level.Fatal, root); } else { foreach (XElement current in root.Elements()) { string localName = current.Name.LocalName; if (localName != null) { if (localName == "Using") { UIElementsViewImporter.LoadUsingNode(vta, root, current); continue; } } UIElementsViewImporter.LoadXml(current, null, vta, ssb); } } }
private static void LoadXml(XElement elt, VisualElementAsset parent, VisualTreeAsset vta, StyleSheetBuilder ssb) { VisualElementAsset visualElementAsset; if (!UIElementsViewImporter.ResolveType(elt, vta, out visualElementAsset)) { UIElementsViewImporter.logger.LogError(ImportErrorType.Semantic, ImportErrorCode.UnknownElement, elt.Name.LocalName, UIElementsViewImporter.Error.Level.Fatal, elt); } else { int num = (parent != null) ? parent.id : 0; int id = num << 1 ^ visualElementAsset.GetHashCode(); visualElementAsset.parentId = num; visualElementAsset.id = id; bool flag = UIElementsViewImporter.ParseAttributes(elt, visualElementAsset, ssb, vta, parent); visualElementAsset.ruleIndex = ((!flag) ? -1 : ssb.EndRule()); if (visualElementAsset is TemplateAsset) { vta.templateAssets.Add((TemplateAsset)visualElementAsset); } else { vta.visualElementAssets.Add(visualElementAsset); } if (elt.HasElements) { foreach (XElement current in elt.Elements()) { if (current.Name.LocalName == "Style") { UIElementsViewImporter.LoadStyleReferenceNode(visualElementAsset, current); } else { UIElementsViewImporter.LoadXml(current, visualElementAsset, vta, ssb); } } } } }