query($query); $attributs = array('Type'); $elements = array('Name', 'CompanyId', 'Address', 'FreeText', 'Date'); foreach ($items as $item) { //Traitement des attributs foreach($attributs as $attrName){ $tab[$attrName] = $item->getAttribute($attrName); } //Traitement des éléments foreach($elements as $elementName){ $node = $item->getElementsByTagName($elementName); if($elementName == 'Name'){ $tab[$elementName] = formatName($node); } if($elementName == 'Address'){ $tab[$elementName] = parseAddress($node); } if($elementName == 'CompanyId'){ $tab[$elementName] = parseCompanyId($node); } if($elementName == 'FreeText'){ } if($elementName == 'Date'){ $tab[$elementName] = parseDate($node); } } } return $tab; } function parseCompanyAddress(){ global $xpath; $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Address'; $items = $xpath->query($query); $tab = parseAddress($items); return $tab; } function parseLegal_Form(){ global $xpath; $tab = array(); $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Legal_Form'; $items = $xpath->query($query); foreach ($items as $item) { $tab[$item->getAttribute('Type')] = $item->nodeValue; } return $tab; } function parseCompanyDateCreation(){ global $xpath; $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Company[@Type="Subject"]/Date[@Type="Age_of_Company"]'; $items = $xpath->query($query); if ($items->length>0){ $date = formatDate($items->item(0)->nodeValue,$items->item(0)->getAttribute('Format')); } return $date; } function parseCommunication(){ global $xpath; $tab = array(); $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Communication'; $items = $xpath->query($query); foreach ($items as $item) { $type = $item->getAttribute('Type'); $tab[$type] = $item->nodeValue; } return $tab; } function parseDirectorDetails(){ global $xpath; $tab = array(); $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/DirectorsDetail'; $items = $xpath->query($query); $attributs = array('Type','Nationality', 'Title'); $elements = array('Name','Address'); $countDirector = 0; foreach ($items as $item) { //Traitement des attributs foreach($attributs as $attrName){ $tab[$countDirector][$attrName] = $item->getAttribute($attrName); } //Traitement des éléments foreach($elements as $elementName){ $node = $item->getElementsByTagName($elementName); if($elementName == 'Name' && $node->length<=1){ $tab[$countDirector][$elementName] = formatName($node); }else{ $tab[$countDirector][$elementName] = parseName($node); } if($elementName == 'Address'){ $tab[$countDirector][$elementName] = parseAddress($node); } } $countDirector++; } return $tab; } function parseAddress($nodeList){ $tab = array(); $elements = array('EntireAddress','Building', 'Street', 'Town', 'City', 'PostCode', 'Country'); foreach ($nodeList as $domElement){ $type = $domElement->getAttribute('Type'); //Traitement des éléments foreach($elements as $elementName){ $tab[$type][$elementName] = $domElement->getElementsByTagName($elementName)->item(0)->nodeValue; } } return $tab; } function parseDate($nodeList){ $tab = array(); foreach ($nodeList as $domElement){ $type = $domElement->getAttribute('Type'); $format = $domElement->getAttribute('Format'); $tab[$type] = formatDate($domElement->nodeValue, $format); } return $tab; } function parseCompanyId($nodeList){ $tab = array(); foreach ($nodeList as $domElement){ $type = $domElement->getAttribute('Type'); if ($type != 'Internal'){ $tab[$type] = $domElement->nodeValue; } } return $tab; } function parseTaxonomy($type){ global $xpath; $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Taxonomy[@Type="'.$type.'"]'; $items = $xpath->query($query); foreach ($items as $item){ $type = $item->getAttribute('Type'); $tab[$type]['Code'] = $item->getAttribute('Code'); $tab[$type]['Value'] = $item->nodeValue; } return $tab; } function parseName($nodeList){ $tab = array(); foreach ($nodeList as $domElement){ $type = $domElement->getAttribute('Type'); $tab[$type] = $domElement->nodeValue; } $name = ''; if (isset($tab['Family'])){ $name = $tab['Family'];} if (isset($tab['Family']) && isset($tab['Christian'])){ $name = $tab['Family'].', '.$tab['Christian'];} return $name; } function parseEmployees($type){ global $xpath; $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Employees[@Type="'.$type.'"]'; $items = $xpath->query($query); foreach ($items as $item){ $number = $item->nodeValue; } return $number; } function parseShare_Capital(){ global $xpath; $tab = array(); $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Share_CapitalSummary/Share_Capital'; $items = $xpath->query($query); foreach ($items as $item){ $currency = $item->getElementsByTagName('Currency')->item(0)->nodeValue; $amountList = $item->getElementsByTagName('Amount'); $tab = parseAmount($amountList, $currency); } return $tab; } function parseFinancial_Summary(){ global $xpath; $tab = array(); $query = '//GraydonUKCompanySchema/CompanyReportPage/CompanyReport/Financial_Summary'; $items = $xpath->query($query); foreach ($items as $item){ $amountList = $item->getElementsByTagName('Amount'); $tab = parseAmount($amountList); } return $tab; } function parseAmount($nodeList, $currency = ''){ $amount = array(); foreach ($nodeList as $domElement){ $format = $domElement->getAttribute('Format'); $type = $domElement->getAttribute('Type'); $unit = $domElement->getAttribute('Units'); $value = $domElement->nodeValue * $unit; if($currency!=''){ $value = $value.' '.$currency; }elseif($domElement->getAttribute('Currency')!= ''){ $value = $value.' '.$domElement->getAttribute('Currency'); } if($format == 'Percentage'){ $value = $value.' %'; } $amount[$type] = $value; } return $amount; } function parseFreeText($query){ global $xpath; $tab = array(); $items = $xpath->query($query); foreach ($items as $item){ $tab[] = $item->nodeValue; } return $tab; } function formatName($node){ /* Court Christian => Prénom Family => Nom de famille (+ Prénom) Trade Trading_Division => Product Full_Name From To Subject */ return $node->item(0)->nodeValue; } function formatDate($value, $format){ if ($format=="CCYY"){ $date = $value; }elseif($format=="CCYYMMDD"){ $date = substr($value,6,2).'/'.substr($value,4,2).'/'.substr($value,0,4); }elseif($format=="DD"){ $date = $value; }elseif($format=="DDMM"){ $date = $value; }elseif($format=="DDMMCCYY"){ $date = $value; }elseif($format=="MM"){ $timestamp = mktime(0, 0, 0, date("m")-$value, 1, date("Y")); $date = date('m/Y',$timestamp); }elseif($format=="MMCCYY"){ $date = $value; }elseif($format=="MMDDCCYY"){ $date = substr($value,2,2).'/'.substr($value,0,2).'/'.substr($value,4,4); }elseif($format=="DD/MM/CCYY"){ $date = $value; } return $date; } ?>