Skip to content
Snippets Groups Projects
Commit aa94a699 authored by Ivan Doroshenko's avatar Ivan Doroshenko Committed by Ivan Doroshenko
Browse files

Issue #3112571 by marvil07, Matroskeen: Support xml parsing on dom plugin

parent ce552ed8
No related branches found
Tags 6.0.0
1 merge request!8Issue #3229479: Entity_lookup taxonomy_term restricted by VID
......@@ -34,6 +34,7 @@ use Masterminds\HTML5;
* - import_method: (optional) What parser to use. Possible values:
* - 'html': (default) use dom extension parsing.
* - 'html5': use html5 parsing.
* - 'xml': use XML parsing.
*
* @codingStandardsIgnoreStart
*
......@@ -100,8 +101,8 @@ class Dom extends ProcessPluginBase {
throw new \InvalidArgumentException('The "method" must be "import" or "export".');
}
$configuration['import_method'] = $configuration['import_method'] ?? 'html';
if (!in_array($configuration['import_method'], ['html', 'html5'])) {
throw new \InvalidArgumentException('The "import_method" must be "html" or "html5".');
if (!in_array($configuration['import_method'], ['html', 'html5', 'xml'])) {
throw new \InvalidArgumentException('The "import_method" must be "html", "html5", or "xml".');
}
parent::__construct($configuration, $plugin_id, $plugin_definition);
$this->configuration += $this->defaultValues();
......@@ -176,6 +177,10 @@ class Dom extends ProcessPluginBase {
$html5->loadHTML($html);
break;
case 'xml':
$document->loadXML($html);
break;
case 'html':
default:
$document->loadHTML($html);
......
......@@ -45,11 +45,11 @@ final class DomTest extends MigrateProcessTestCase {
/**
* @covers ::__construct
*/
public function testInvalidImportMethod() {
public function testInvalidImportMethod(): void {
$configuration['method'] = 'import';
$configuration['import_method'] = 'invalid';
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('The "import_method" must be "html" or "html5".');
$this->expectExceptionMessage('The "import_method" must be "html", "html5", or "xml".');
(new Dom($configuration, 'dom', []));
}
......@@ -77,6 +77,18 @@ final class DomTest extends MigrateProcessTestCase {
$this->assertTrue($document instanceof \DOMDocument);
}
/**
* @covers ::import
*/
public function testImportMethodXml(): void {
$configuration['method'] = 'import';
$configuration['import_method'] = 'xml';
$value = '<item><value>A simple paragraph.</value></item>';
$document = (new Dom($configuration, 'dom', []))
->transform($value, $this->migrateExecutable, $this->row, 'destinationproperty');
$this->assertTrue($document instanceof \DOMDocument);
}
/**
* @covers ::import
*/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment