Version 0.5.0
Total issues resolved: 5
- 8: Add replace by external nodes dom manipulator
- 9: Add DOM validator interface
- 10: DOM Node collections
- 11: Remove deps
- 13: DOM traverser
Some highlights:
Node Collections
$total = $xml->locate(elements_with_tagname('products'))
->children()
->filter(
static fn(DOMElement $element)
=> $element->getAttribute('active') === 'yes'
)
->query('./price')
->reduce(
static fn(int $total, DOMElement $price)
=> $total + value($price, Type\int()),
0
);
Traversable node visitors
$doc = Document::fromXmlFile(
$file,
traverse(
new WazzupVisitor(),
)
);
class WazzupVisitor extends AbstractVisitor
{
public function onNodeLeave(DOMNode $node) : Action
{
if (!is_attribute($node)) {
return new Action\Noop();
}
attribute($node->nodeName, 'WAZZUP')($node->parentNode);
return new Action\Noop();
}
}