8 namespace Fossology\ReportImport;
11 use Symfony\Component\DependencyInjection\SimpleXMLElement;
13 require_once
'ImportSource.php';
23 private $datas = array();
31 $this->filename = $filename;
37 public function parse()
39 $this->xml = simplexml_load_file($this->filename,
null, LIBXML_NOCDATA);
42 $licenses = $this->xml->xpath(
"License");
44 $copyrights = $this->xml->xpath(
"Copyright");
68 $line = strtok((
string) $filesNode, $separator);
70 while ($line !==
false) {
71 if(! array_key_exists($line, $this->datas))
76 $line = strtok($separator);
87 foreach ($licenses as $licenseNode)
89 $attributes = $licenseNode->attributes();
90 $licenseName = (string) $attributes[
"name"];
91 $licenseId = $attributes[
"spdxidentifier"] !== NULL ? (string) $attributes[
"spdxidentifier"] : $licenseName;
92 $licenseText = (string) $licenseNode->xpath(
"Content")[0];
94 $item->setLicenseCandidate($licenseName, $licenseText,
false);
95 $item->setCustomText((
string) $licenseNode);
97 foreach ($licenseNode->xpath(
"Files") as $filesNode)
100 foreach ($files as $file)
102 $this->datas[$file]->addLicenseInfoInFile($item);
113 foreach ($copyrights as $copyrightNode)
115 foreach ($copyrightNode->xpath(
"Files") as $filesNode)
118 foreach ($files as $file) {
119 foreach ($copyrightNode->xpath(
"Content") as $content) {
120 $this->datas[$file]->addCopyrightText((
string)$content);
133 foreach ($this->datas as $fileName => $data)
135 $allFiles[$fileName] = $fileName;
155 return $this->datas[$fileid];
parseLicenseInformation($licenses)
parseCopyrightInformation($copyrights)
splitFilesList($filesNode)