9 use Symfony\Component\Console\Command\Command;
10 use Symfony\Component\Console\Input\InputArgument;
11 use Symfony\Component\Console\Input\InputOption;
12 use Symfony\Component\Console\Input\InputInterface;
13 use Symfony\Component\Console\Output\OutputInterface;
52 private $xsltProcessorFactory;
66 $this->formatter = $formatter;
67 $this->domFactory = $domFactory;
68 $this->xsltProcessorFactory = $xsltProcessorFactory;
70 parent::__construct();
78 $this->setName(
'dev:xml:convert')
79 ->setDescription(
'Converts XML file using XSL style sheets')
82 self::XML_FILE_ARGUMENT,
83 InputArgument::REQUIRED,
84 'Path to XML file that going to be transformed' 87 self::PROCESSOR_ARGUMENT,
88 InputArgument::REQUIRED,
89 'Path to XSL style sheet that going to be applied to XML file' 92 self::OVERWRITE_OPTION,
94 InputOption::VALUE_NONE,
109 $domXml = $this->domFactory->create();
110 $domXsl = $this->domFactory->create();
111 $xsltProcessor = $this->xsltProcessorFactory->create();
113 $xmlFile = $input->getArgument(self::XML_FILE_ARGUMENT);
114 $domXml->preserveWhiteSpace =
true;
115 $domXml->load($xmlFile);
117 $domXsl->preserveWhiteSpace =
true;
118 $domXsl->load($input->getArgument(self::PROCESSOR_ARGUMENT));
120 $xsltProcessor->registerPHPFunctions();
121 $xsltProcessor->importStylesheet($domXsl);
122 $transformedDoc = $xsltProcessor->transformToXml($domXml);
123 $result = $this->formatter->format($transformedDoc);
125 if ($input->getOption(self::OVERWRITE_OPTION)) {
127 $output->writeln(
"<info>You saved converted XML into $xmlFile</info>");
132 return \Magento\Framework\Console\Cli::RETURN_SUCCESS;
133 }
catch (\Exception $exception) {
134 $errorMessage = $exception->getMessage();
135 $output->writeln(
"<error>$errorMessage</error>");
137 return \Magento\Framework\Console\Cli::RETURN_FAILURE;
__construct(Formatter $formatter, DomDocumentFactory $domFactory, XsltProcessorFactory $xsltProcessorFactory)
execute(InputInterface $input, OutputInterface $output)