/** 
  * function getXMLObject
  * <pre>
  * Generates an XML Object from the object's Values array.
  * NOTE: I'm overridding the parent method due to special case where
  * the dataManager & labelManager share the same field name (dataManager's
  * primary key). 
  * </pre>
  * @param $isHeaderIncluded [BOOL] Determines if we include the '<?xml version="1.0"?>' header.
  * @param $rootNodeName [STRING] The XML root node name.
  *
  * @return [OBJECT] XMLObject
  */
 function getXMLObject($isHeaderIncluded = true, $rootNodeName = '')
 {
     // use member root node name if one is not provided.
     if ($rootNodeName == '') {
         $rootNodeName = $this->xmlNodeName;
     }
     // NOTE: Big picture here, is to make the two seperate XML
     // descriptions to be 1 blended description.
     // get the XML objects of the dataManager & labelManager
     $dataManagerXMLObj = $this->dataManager->getXMLObject();
     $labelManagerXMLObj = $this->labelManager->getXMLObject();
     // Get their values as Arrays
     $dataManagerValues = $dataManagerXMLObj->getValues();
     $labelManagerValues = $labelManagerXMLObj->getValues();
     // NOTE:
     // in this case, labelManager contains the dataManager's primary key
     // as the foreign key.  In our application we need both values. So
     // here we rename the labelManager's foreign key instance to
     // 'viewerLanguage_id'
     $combinedValues = $dataManagerValues;
     foreach ($labelManagerValues as $xmlElement) {
         $key = $xmlElement->getName();
         if ($key == 'language_id') {
             $xmlElement->setName('viewerLanguage_id');
         }
         $combinedValues[] = $xmlElement;
     }
     // create new XML Object for output
     $xmlObject = new XMLObject($rootNodeName);
     // set those combined values as this Blended XML object
     $xmlObject->setValues($combinedValues);
     return $xmlObject;
 }