[ONOS-5764]Decoder is returning Null

Change-Id: I51dabe5a7133df6e5766cb3ed3c36a596936263b
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
index b5a9ea2..11a14ff 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/DefaultXmlCodecWalker.java
@@ -35,7 +35,10 @@
     public void walk(XmlListener listener, Element element,
                      Element rootElement) {
         try {
-            listener.enterXmlElement(element, getElementType(element),
+            Element newElement = element.createCopy();
+            newElement.remove(element.getNamespace());
+
+            listener.enterXmlElement(element, getElementType(newElement),
                                      rootElement);
 
             if (element.hasContent() && !element.isTextOnly()) {
diff --git a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
index 1c6536a..eefc60f 100644
--- a/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
+++ b/apps/yms/app/src/main/java/org/onosproject/yms/app/ych/defaultcodecs/xml/XmlCodecListener.java
@@ -37,6 +37,8 @@
      */
     private YdtExtendedBuilder ydtExtBuilder;
 
+    private String prevNodeNamespace;
+
     /**
      * Sets the YANG data tree builder object.
      *
@@ -69,21 +71,42 @@
             nameSpace = element.getNamespace().getURI();
         }
 
+        /*
+         * When new module has to be added, and if curnode has reference of
+         * previous module, then we need to traverse back to parent(logical root
+         * node).
+         */
+        if (ydtExtBuilder.getRootNode() == ydtExtBuilder.getCurNode()
+                .getParent() && prevNodeNamespace != null &&
+                !prevNodeNamespace.equals(nameSpace)) {
+            ydtExtBuilder.traverseToParent();
+        }
+
         if (nodeType == OBJECT_NODE && element.content() == null || element
                 .content().isEmpty()) {
             nodeType = TEXT_NODE;
         }
         if (nodeType == OBJECT_NODE) {
             if (ydtExtBuilder != null) {
+                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
+                    ydtExtBuilder.addChild(null, nameSpace, opType);
+                }
                 ydtExtBuilder.addChild(element.getName(), nameSpace, opType);
             }
         } else if (nodeType == TEXT_NODE) {
 
             if (ydtExtBuilder != null) {
+                if (ydtExtBuilder.getCurNode() == ydtExtBuilder.getRootNode()) {
+                    ydtExtBuilder.addChild(null, nameSpace, opType);
+                }
                 ydtExtBuilder.addLeaf(element.getName(), nameSpace,
                                       element.getText());
             }
         }
+
+        if (nameSpace != null) {
+            prevNodeNamespace = nameSpace;
+        }
     }
 
     @Override