密码/dom-navigator

简单包装,用于在DOMNode中查找元素。增加了XPath、选择器(如jQuery)机制来查找元素,允许创建自己的实现。

v1.0.2 2016-09-07 12:22 UTC

This package is auto-updated.

Last update: 2024-09-13 23:16:38 UTC


README

Build Status

关于库

该库是php中DOM实现的包装。旨在轻松加载HTML文档,并对其进行解析。它允许您实现自己的元素搜索算法。

文档

安装

运行命令

composer require mima/dom-navigator

在composer.json中添加依赖

{
    "require": {
        "mima/dom-navigator": "@stable"
    }
}

使用导航器

开始使用导航器需要创建一个DOMNavigator\Navigator类的实例

use DOMNavigator\Navigator;
use DOMNavigator\Loader\StringLoader;
use DOMNavigator\Finder\XPathFinder;

$loader = new StringLoader();
$finder = new XPathFinder();

$navigator = new Navigator($loader, $finder);

在搜索文档之前需要加载文档

// For load HTML document call:
$navigator->loadHTML($htmlContent);

// or call next method for load XML document:
$navigator->loadXML($xmlContent);

当您调用方法loadHTMLloadXML时,导航器会尝试使用DOMNavigator\Loader\StringLoader(在本例中)来加载DOMDocument。加载后,您可以使用navigate方法在文档中搜索元素。

// return \DOMNodeList with list of found elements
$addressNodes = $navigator->navigate("//div[@id='address']");

导航方法始终返回\DOMNodeList。您可以在元素上下文中进行搜索

// $addresNodes is a list of element from previous example
$cityNodes = $navigator->navigate("*[@id='city']", $addressNodes->item(0));

如果您想找出找到的元素数量,请参考以下示例

if ($cityNodes->length > 0) {
    ...
}

创建自定义查找器

所有查找器都需要实现接口DOMNavigator\Finder\FinderInterface

创建自定义加载器

所有加载器都需要实现DOMNavigator\Finder\LoaderInterface

使用组合加载器

如果您不确定文档的来源,可以使用组合加载器

use DOMNavigator\Loader\CompositeLoader;
use DOMNavigator\Loader\URLLoader;
use DOMNavigator\Loader\FileLoader;
use DOMNavigator\Loader\StringLoader;


$stringLoader = new StringLoader();
$urlLoader = new URLLoader($stringLoader);
$fileLoader = new FileLoader();

// set loaders with construct
$compositeLoader = new CompositeLoader([$stringLoader, $urlLoader]);

// set loader with method
$compositeLoader->addLoader($fileLoader);

下一步是将加载器分配给导航器

// as first argument in constructor
$navigator = new Navigator($compositeLoader, $finder);

// or using a special method
$navigator->setLoader($compositeLoader);