BExIS.Xml.Helpers.Mapping.XmlMapperManager.mapNode C# (CSharp) Method

mapNode() private method

private mapNode ( XmlDocument destinationDoc, XmlNode destinationParentNode, XmlNode sourceNode ) : XmlDocument
destinationDoc System.Xml.XmlDocument
destinationParentNode System.Xml.XmlNode
sourceNode System.Xml.XmlNode
return System.Xml.XmlDocument
        private XmlDocument mapNode(XmlDocument destinationDoc, XmlNode destinationParentNode, XmlNode sourceNode)
        {
            try
            {

            // load the xpath from source node
            // x[1]\y[2]\f[1]
            string sourceXPath = XmlUtility.GetDirectXPathToNode(sourceNode);
            // x\y\f
            string sourceXMppingFilePath = XmlUtility.GetXPathToNode(sourceNode);

            //load route from mappingFile of the source node
            XmlMappingRoute route = xmlMapper.GetRoute(sourceXMppingFilePath);

            XmlNode destinationPNode = destinationParentNode;

            // check if this source xpath is mapped in the xmlMapper
            if (xmlMapper.SourceExist(sourceXMppingFilePath))
            {

                if (!string.IsNullOrEmpty(sourceNode.InnerText) || addAlsoEmptyNode)
                {
                    // get name of the destination node
                    string destinationTagName = route.GetDestinationTagNames();

                    // get xpath of the destination node
                    // X\XType\Y\F
                    string destinationXMppingFilePath = route.GetDestinationXPath();

                    //ToDo checkif the way to map is intern to extern or extern to intern
                    // X[1]\XType[2]\Y[1]\yType[4]\F[1]\yType[2]
                    string destinationXPath = "";

                    if (this.TransactionDirection == TransactionDirection.ExternToIntern)
                        destinationXPath = mapExternPathToInternPathWithIndex(sourceXPath, destinationXMppingFilePath);
                    else
                        destinationXPath = mapInternPathToExternPathWithIndex(sourceXPath, destinationXMppingFilePath);

                    // create xmlnode in document
                    XmlNode destinationNode = XmlUtility.GenerateNodeFromXPath(destinationDoc, destinationDoc as XmlNode,
                        destinationXPath); //XmlUtility.CreateNode(destinationTagName, destinationDoc);
                    destinationNode.InnerText = sourceNode.InnerText;

                    //if (type == element), get content
                    if (xmlMapper.IsSourceElement(sourceXPath))
                    {

                    }

                    //destinationParentNode = createMissingNodes(destinationParentXPath, currentParentXPath, destinationParentNode, destinationDoc);

                    ////check if nodes in destination not exist, create them
                    //string destinationParentXPath = route.GetDestinationParentXPath();
                    //string currentParentXPath = XmlUtility.GetDirectXPathToNode(destinationParentNode);
                }

            }

            if (sourceNode.HasChildNodes)
            {
                foreach (XmlNode childNode in sourceNode.ChildNodes)
                {
                    destinationDoc = mapNode(destinationDoc, destinationPNode, childNode);
                }
            }

            }
            catch (Exception exception)
            {
                  Debug.WriteLine(exception.Message);
            }

            return destinationDoc;
        }