selene / xml
dev-development
2014-09-16 14:23 UTC
Requires
- php: >=5.4.0
- selene/common: dev-development
Requires (Dev)
- league/phpunit-coverage-listener: dev-master
- selene/testsuite: dev-development
This package is not auto-updated.
Last update: 2015-12-05 10:10:33 UTC
README
安装
在您的composer.json
{
"require": {
"php": ">=5.4.0",
"selene/xml": "dev-development"
}
}
运行composer install或composer update
$ composer install --dev
测试
使用以下命令运行测试
$ vendor/bin/phpunit
解析器
Parser类可以将xml字符串、文件、DOMDocuments和DOMElements解析为PHP数组。
解析xml字符串
<?php
use \Selene\Components\Xml\Parser;
$parser = new Parser;
$parser->parse('<data><foo>bar</foo></data>');
解析xml文件
<?php
use \Selene\Components\Xml\Parser;
$parser = new Parser;
$parser->parse('/path/to/data.xml');
解析DOMDocument
<?php use \Selene\Components\Xml\Parser; $parser = new Parser; $parser->parseDom($dom);
解析DOMElement
<?php use \Selene\Components\Xml\Parser; $parser = new Parser; $parser->parseDomElement($element);
解析器选项
合并属性
<?php use \Selene\Components\Xml\Parser; $parser = new Parser; $parser->setMergeAttributes(true);
键归一化
您可以通过设置键归一化回调来指定如何转换键。
默认归一化将破折号转换为下划线,并将驼峰式转换为蛇形表示法。
<?php
use \Selene\Components\Xml\Parser;
$parser = new Parser;
$parser->setKeyNormalizer(function ($key) {
// do string transfomations
return $key;
});
$parser->parseDomElement($element);
设置属性键
如果禁用了属性合并,请使用此选项更改默认属性键(默认为@attributes)。
<?php
use \Selene\Components\Xml\Parser;
$parser = new Parser;
$parser->setAttributesKey('@attrs');
设置索引键
这将强制解析器将具有给定键的nodeName节点视为列表。
<?php
use \Selene\Components\Xml\Parser;
$parser = new Parser;
$parser->setIndexKey('item');
设置复数化器
默认情况下,解析器将解析类似以下xml结构:
<entries>
<entry>1</entry>
<entry>2</entry>
</entries>
将其解析为类似以下结构:
<?php ['entries' => ['entry' => [1, 2]]]
设置复数化器可以解决这个问题。
注意,复数化器可以是任何可调用,它接受一个字符串并返回一个字符串。
<?php
$parser->setPluralizer(function ($string) {
if ('entry' === $string) {
return 'entries';
}
});
<?php ['entries' => [1, 2]]
写入器
将PHP数据转储为XML字符串
<?php
use \Selene\Components\Xml\Writer;
$writer = new Writer;
$data = [
'foo' => 'bar'
];
$writer->dump($data); // <root><foo>bar</foo></root>
// set the xml root node name:
$writer->dump($data, 'data'); // <data><foo>bar</foo></data>
将PHP数据转储为DOMDocument
注意:这将创建一个Selene\Components\Xml\Dom\DOMDocument实例。
<?php
use \Selene\Components\Xml\Writer;
$writer = new Writer;
$data = [
'foo' => 'bar'
];
$dom = $writer->writeToDom($data);
写入器选项
设置归一化器实例
通常,在实例化新的Writer时,会为您设置NormalierInterface实现,但是您可以设置自己的归一化器实例。
注意:归一化器必须实现Selene\Components\Xml\Normalizer\NormalierInterface接口。
<?php use \Selene\Components\Xml\Writer; use \Selene\Components\Xml\Normalizer\Normalizer; $writer = new Writer(new Normalizer); // or $writer->setNormalizer($myNormalizer);
设置屈折变化器
屈折变化器与解析器的复数化器正好相反。它将字符串单数化。
<?php
$writer->setInflector(function ($string) {
if ('items' === $string) {
return 'item';
}
});
设置文档编码
默认编码为UTF-8。
<?php $writer->setEncoding($encoding); // string
设置属性键映射
如果您想将某些键输出为xml属性,这将很有用。
<?php
$writer->setKeyMap([
'nodeName' => ['id', 'entry'] // nested keys 'id' and 'entry' of the key
element 'nodeName' will be set as attributes instead of childnodes.
]);
注意:您还可以使用addMappedAttribute($nodeName, $attributeName)添加更多映射属性。