Skip to content

Innmind/XML

Repository files navigation

XML

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: