/// <summary> /// Попытаться связать тег XML с объектом SubLayer. /// </summary> /// <param name="sNode">Узел XML.</param> /// <param name="subLayer">Объект SubLayer'а.</param> private void CheckNodes(XmlNode sNode, ref SubLayer subLayer) { if (sNode.Name.ToLower() == _tagName) { subLayer.name = sNode.InnerText; } if (sNode.Name.ToLower() == _tagTitle) { subLayer.title = sNode.InnerText; } if (sNode.Name.ToLower() == _tagAttributes) { subLayer.attributes = sNode.Cast <XmlNode>() .Select(a => { return(new Attribute { name = a.Attributes[_tagName] ?.Value ?? "", type = a.Attributes[_tagType] ?.Value ?? "" }); }).ToList(); } }
/// <summary> /// Преобразование тегов XML в JSON. /// </summary> /// <returns>Возвращает преобразованные /// теги в JSON.</returns> public string MapNodes(List <XmlNode> nodes) { var sublayers = nodes .Where(n => { return(n.Name.ToLower() == _tagLayer); }) .Select(sl => { var subLayer = new SubLayer(); sl.Cast <XmlNode>() .ToList() .ForEach(sNode => { CheckNodes(sNode, ref subLayer); }); return(subLayer); }).ToList(); _outputData = new Layer { name = nodes .Where(n => n.Name.ToLower() == _tagName) .DefaultIfEmpty() .First() ?.InnerText ?? "", title = nodes .Where(n => n.Name.ToLower() == _tagTitle) .DefaultIfEmpty() .First() ?.InnerText ?? "", sublayers = sublayers }; return(this.OutputData); }