8 namespace Fossology\ReportImport;
11 use Symfony\Component\DependencyInjection\SimpleXMLElement;
12 require_once
'ImportSource.php';
22 private $datas = array();
30 $this->filename = $filename;
36 public function parse()
38 $this->xml = simplexml_load_file($this->filename,
null, LIBXML_NOCDATA);
41 $licenses = $this->xml->xpath(
"License");
43 $copyrights = $this->xml->xpath(
"Copyright");
60 $line = strtok((
string) $filesNode, $separator);
62 while ($line !==
false) {
63 if(! array_key_exists($line, $this->datas))
68 $line = strtok($separator);
79 foreach ($licenses as $licenseNode)
81 $attributes = $licenseNode->attributes();
82 $licenseName = (string) $attributes[
"name"];
83 $licenseId = $attributes[
"spdxidentifier"] !== NULL ? (string) $attributes[
"spdxidentifier"] : $licenseName;
84 $licenseText = (string) $licenseNode->xpath(
"Content")[0];
86 $item->setLicenseCandidate($licenseName, $licenseText,
false);
87 $item->setCustomText((
string) $licenseNode);
89 foreach ($licenseNode->xpath(
"Files") as $filesNode)
92 foreach ($files as $file)
94 $this->datas[$file]->addLicenseInfoInFile($item);
105 foreach ($copyrights as $copyrightNode)
107 foreach ($copyrightNode->xpath(
"Files") as $filesNode)
110 foreach ($files as $file) {
111 foreach ($copyrightNode->xpath(
"Content") as $content) {
112 $this->datas[$file]->addCopyrightText((
string)$content);
125 foreach ($this->datas as $fileName => $data)
127 $allFiles[$fileName] = $fileName;
147 return $this->datas[$fileid];
parseLicenseInformation($licenses)
parseCopyrightInformation($copyrights)
splitFilesList($filesNode)