private function getNodeList()
{
$xpath = new DOMXPath($this->document);
$nodeList = $xpath->query('//input | //textarea | //select | //div[@data-input-name]');
/** @var DOMElement $node */
foreach ($nodeList as $node) {
$name = $node->getAttribute('name');
if (!$name) {
$name = $node->getAttribute('data-input-name');
}
if (!$name || $node->getAttribute('type') === 'submit') {
// At least a name is needed to submit a value.
// Silently continue, might be a submit button.
continue;
}
if ($node->hasAttribute('disabled')) {
// Ignore disabled nodes
continue;
}
(yield $name => $node);
}
}