Example #1
0
        public XmlFileEntity LoadXmlFile(string fileName)
        {
            var xmlDoc        = XDocument.Load(fileName);
            var rootNode      = new XmlNodeEntity(xmlDoc.Root.Name.LocalName, xmlDoc.Root.Value);
            var xmlFileEntity = new XmlFileEntity(rootNode);

            var childrenNodesFromRoot = GetChildrenNodes(xmlDoc.Root);

            childrenNodesFromRoot.ForEach(x => xmlFileEntity.RootNode.AddChildNode(x));

            return(xmlFileEntity);
        }
Example #2
0
        List <string> BuildXmlPath(XmlNodeEntity deepestNode, XmlNodeEntity rootNode)
        {
            var path        = new List <string>();
            var currentNode = deepestNode;

            while (!currentNode.Equals(rootNode))
            {
                path.Add(currentNode.Name);
                currentNode = currentNode.Parent;
            }

            path.Add(rootNode.Name);
            path.Reverse();
            return(path);
        }
Example #3
0
        bool FindPathThroughChildren(XmlNodeEntity parentNode, XmlNodeEntity rootNode, IEnumerable <string> xmlPathToFind)
        {
            foreach (var childNode in parentNode.ChildrenNodes)
            {
                var xmlPath = BuildXmlPath(childNode, rootNode);
                if (ListsAreEquals(xmlPath, xmlPathToFind))
                {
                    return(true);
                }

                var xmlPathFound = FindPathThroughChildren(childNode, rootNode, xmlPathToFind);
                if (xmlPathFound)
                {
                    return(true);
                }
            }
            return(false);
        }
Example #4
0
        List <XmlNodeEntity> GetChildrenNodes(XElement parentElement)
        {
            var children = new List <XmlNodeEntity>();

            foreach (var oneElt in parentElement.Elements())
            {
                // adds children nodes of the current XElement to the new entity
                var childrenList  = GetChildrenNodes(oneElt);
                var newNodeEntity = new XmlNodeEntity(oneElt.Name.LocalName, oneElt.Value);
                childrenList
                .ForEach(x => newNodeEntity.AddChildNode(x));

                // adds attributes of the current XElement to the new entity
                var attributes = GetListOfAttributesFromXelement(oneElt);
                attributes
                .ToList()
                .ForEach(x => newNodeEntity.AddAttribute(x.Key, x.Value));
                children.Add(newNodeEntity);
            }
            return(children);
        }
Example #5
0
 public XmlFileEntity(XmlNodeEntity rootNode)
 {
     this.rootNode = rootNode;
 }