pn / epp-xml2array
将XML/EPP转换为简单易读的数组,包括命名空间和CDATA支持
dev-master
2015-11-14 12:47 UTC
Requires
- php: >=5.3.0
Requires (Dev)
- phpunit/phpunit: ~4.7
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