wangjian/xmlparser

PHP写的XML解析器,能简单快速地将XML文档解析成节点树

dev-master 2017-06-13 08:03 UTC

This package is not auto-updated.

Last update: 2024-04-27 23:29:59 UTC


README

XmlParser

用PHP写的XML解析器,使用简单,效率高。

Usage

XML读取

//从XML文档中读取
$xml = XmlParser::loadFromFile('./data.xml');

//从字符串中读取,字符串不能含有声明行
$xml = XmlParser::loadFromString('<filter name="test"><whitelist><directory>./</directory></whitelist></filter>');

获取子节点

可以使用find函数来获取节点的子节点,此函数只会获取直接子节点

/*
 * 采用类似jquery的选择器
 * 支持标签选择器,属性选择器以及过滤选择器
 */

//获取所有子节点
var_dump($xml->find()); //或者var_dump($xml->find('*'));

//获取指定标签子节点
var_dump($xml->find('testsuites'));

//获取带有特定属性的子节点
var_dump($xml->find('testsuites[test=test]'));

//筛选子节点
var_dump($xml->find('testsuites[test=test]:ge(0)')); //支持eq, gt, lt, ge, le五中过滤选择器

检查是否包含特定子节点

可以采用has函数来检查是否含有特定的子节点,此函数接受find函数相同的参数值

获取兄弟节点

//获取节点的序号值
$testsuite = $xml->find('testsuites:eq(0)');
echo $testsuite->index();

//获取节点的父节点
var_dump($testsuite->parent());

//获取所有兄弟节点
var_dump($testsuite->sibings());

//获取上一个兄弟节点
var_dump($testsuite->prev());

//获取下一个兄弟节点
var_dump($testsuite->next());

子节点的添加与删除

//创建子节点
$node1 = XmlParser::createCompositeNode('test', ['attr1' => 'value1']);
$node2 = XmlParser::createNode('test2', ['arrt2' => 'value2']);

//添加子节点
$node1->addChild($node2);
$xml->addChild($node1);

//删除节点
$xml->removeChild($node1);    //$xml->removeChild(1); 也可以传递子节点序号来进行删除

//删除所有子节点
$xml->removeAllChild();

节点属性获取

$directory = $xml->find('filter')[0]->find('whitelist')[0]->find('directory')[0];

//获取节点名字
echo $directory->name();

//获取节点的值
echo $directory->text();    //$directory->text('./test/'); 可以通过传递参数来设置节点的值

//获取节点属性
echo $directory->attr('test');    //$directory->attr('test', 'test1'); 可以通过传递参数来设置节点的属性