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)
添加更多映射属性。