pn/epp-xml2array

将XML/EPP转换为简单易读的数组,包括命名空间和CDATA支持

dev-master 2015-11-14 12:47 UTC

This package is not auto-updated.

Last update: 2024-09-18 18:25:50 UTC


README

将支持命名空间的EPP (http://en.wikipedia.org/wiki/Extensible_Provisioning_Protocol) 转换为简单的数组。也适用于普通XML。支持CDATA。

为什么不使用xyz?

对于常规XML,你可以使用这个(可能)不错的工具

$xml = simplexml_load_string($xmlstring);
$json = json_encode($xml);
$array = json_decode($json,TRUE);

但它不直接支持命名空间。此外,simplexml_load_string 似乎会删除某些属性。例如,如果你的EPP有

<domain:contact type="billing">P-ABC120</domain:contact>

它将删除“type”属性。对于EPP,任何缺失的信息都会使这些方法不可用。

如何使用

首先,加载XML

PN\Xml2Array::loadXML($xml_string);
//or
PN\Xml2Array::loadXML(file_get_contents('somefile.xml'));

从完整的EPP字符串中获取整个数组

print_r( PN\Xml2Array::getArray() );

获取所有命名空间前缀 + URI作为一个数组

print_r( PN\Xml2Array::getNamespaces() );

通过提供前缀获取EPP的部分作为数组

print_r( PN\Xml2Array::getArrayNS('contact') );
在v1.1中添加

懒得查找数组/xml中标签的位置?或者标签可能在不同xml文件中变化?查看example1.php,可以这样使用

print_r( PN\Xml2Array::getArrayElement('domain', 'pw', true ) );
在v1.3中添加

想获取一个属性,例如

<result code="1000">...

查看example1.php,可以这样使用

print_r( Xml2Array::getArrayAttribute(null, 'result', 'code', true) );

就这么简单。

许可证

MIT