innmind/xml

Library to abstract xml manipulation

7.6.0 2023-10-22 14:43 UTC

This package is auto-updated.

Last update: 2024-03-22 15:30:35 UTC


README

Build Status codecov Type Coverage

This library is an abstraction on top of the \DOM* classes of php, the goal is to clarify the interfaces of each node.

The big differences are that each node is immutable and is only aware of its children (instead of being aware of its parent and siblings). This can allow you to extract a whole subtree and use it to build a new tree without affecting the original one.

Important: you must use vimeo/psalm to make sure you use this library correctly.

Installation

composer require innmind/xml

Usage

use Innmind\Xml\{
    Reader\Reader,
    Node,
};
use Innmind\Filesystem\File\Content;
use Innmind\Immutable\Maybe;

$read = Reader::of();

$tree = $read(
    Content\Lines::ofContent('<root><foo some="attribute"/></root>')
); // Maybe<Node>

Extract informations out of a node

The library use the visitor pattern to give access back to the raw xml library. For example you can access the parent of a node like this:

use Innmind\Xml\Visitor\ParentNode;

$parent = ParentNode::of($childNode)($treeToSearchIn); // Maybe<Node>

Here is the full list of visitors you have access to by default: