예제 #1
0
        /// <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();
            }
        }
예제 #2
0
        /// <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);
        }