24 private $currentDirRead;
29 private $fileWriteFactory;
34 private $domDocumentFactory;
46 $this->currentDirRead = $readFactory->
create(getcwd());
47 $this->fileWriteFactory = $fileWriteFactory;
60 $componentNode =
null;
64 $file = $this->fileWriteFactory->create(
66 \
Magento\Framework\Filesystem\DriverPool::FILE,
69 $dom = $this->domDocumentFactory->create();
70 $fileContent = $file->readAll();
71 if (!empty($fileContent)) {
72 $dom->loadXML($fileContent);
74 $this->initEmptyFile($dom);
76 $xpath = new \DOMXPath($dom);
77 $nodeList = $xpath->query(
'/project');
78 $projectNode = $nodeList->item(0);
82 $dom = $this->domDocumentFactory->create();
83 $projectNode = $this->initEmptyFile($dom);
86 $xpath = new \DOMXPath($dom);
87 $nodeList = $xpath->query(
"/project/component[@name='ProjectResources']");
88 $componentNode = $nodeList->item(0);
89 if ($componentNode ==
null) {
90 $componentNode = $dom->createElement(
'component');
91 $componentNode->setAttribute(
'name',
'ProjectResources');
92 $projectNode->appendChild($componentNode);
95 foreach ($dictionary as $urn => $xsdPath) {
96 $node = $dom->createElement(
'resource');
97 $node->setAttribute(
'url', $urn);
98 $node->setAttribute(
'location', $xsdPath);
99 $componentNode->appendChild($node);
101 $dom->formatOutput =
true;
102 $file = $this->fileWriteFactory->create(
104 \
Magento\Framework\Filesystem\DriverPool::FILE,
107 $file->write($dom->saveXML());
117 private function initEmptyFile(\DOMDocument $dom)
119 $projectNode = $dom->createElement(
'project');
122 $projectNode->setAttribute(
'version',
'4');
123 $dom->appendChild($projectNode);
124 $rootComponentNode = $dom->createElement(
'component');
127 $rootComponentNode->setAttribute(
'version',
'2');
128 $rootComponentNode->setAttribute(
'name',
'ProjectRootManager');
129 $projectNode->appendChild($rootComponentNode);
create($path, $driverCode=DriverPool::FILE)