dbrisinajumi/array2xml 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

dbrisinajumi/array2xml

最新稳定版本:0.9

Composer 安装命令:

composer require dbrisinajumi/array2xml

包简介

Array -> XML Converter Class

关键字:

README 文档

README

Array2xml is a PHP library that converts array to valid XML.

Based on XMLWriter.

Requirements

  • PHP 5.3+
  • XMLWriter

Installation

require_once ('/path/to/array2xml.php');

Usage (Ex.: RSS Last News)

Load the library and set custom configuration:

$array2xml = new Array2xml();
$array2xml->setRootName('rss');
$array2xml->setRootAttrs(array('version' => '2.0'));
$array2xml->setCDataKeys(array('description'));

Start by creating a root element:

$data['channel']['title']        = 'News RSS';
$data['channel']['link']         = 'http://yoursite.com/';
$data['channel']['description']  = 'Amazing RSS News';
$data['channel']['language']     = 'en';

Now pass elements from DB query in cycle:

$row = $db->lastNews();
foreach($row as $key => $lastNews)
{
	$data['channel'][$key]['item']['title']       = $lastNews->title;
	$data['channel'][$key]['item']['link']        = 'http://yoursite.com/news/'.$lastNews->url;
	$data['channel'][$key]['item']['description'] = $lastNews->description;
	$data['channel'][$key]['item']['pubDate']     = date(DATE_RFC1123, strtotime($lastNews->added));
}

You can also set element attributes individually. The example below appends an attribute AttributeName to item node:

$data['channel'][$key]['item']['@attributes'] 		= array('AttributeName' => $attributeValue);

Or, if your node doesn't have children, you can use this:

$data['channel]['@attributes'] = array('AttributeName' => $attributeValue);
$data['channel]['@content']    = 'Content of channel node';

This will set both attributes and the content of channel node.

Alternatively, you can use setElementsAttrs() method:

$array2xml->setElementsAttrs( array('ElementName' => array('AttributeName' => $attributeValue) ));

Note that in this case all elements with specified names will have identical attribute names and values.

If you need to include a raw XML tree somewhere, mark it's element using $array2xml->setRawKeys(array('elementName'))

Finally, convert and print output data to screen

echo $array2xml->convert($data);

Configuration

You can easily configure this lib to fit your specific use case using setters described below.

setVersion(string $version)

Sets XML version header.

setEncoding(string $encoding)

Sets XML encoding

setRootName(string $rootName)

Set XML Root Element Name

setRootAttrs(array $rootAttrs)

Set XML Root Element Attributes

setElementsAttrs(array $attrs)

Set Attributes of every XML Elements that matches the given names. Example argument: ['elementName' => ['someAttr' => 'attrValue']]

setCDataKeys(array $elementNames)

Marking given elements as CData ones

setRawKeys(array $elementNames)

Marking given elements as raw ones

setNumericTagPrefix(string $prefix)

Set default prefix for numeric nodes

setSkipNumeric(bool $skipNumeric)

On/Off Skip numeric nodes

setEmptyElementSyntax(const)

In some cases you might want to control the exact syntax of empty elements.

By default, nodes that are empty or equal to null are using self-closing syntax(<foo/>).

You can override this behavior using Array2xml::EMPTY_FULL to force using closing tag(<foo></foo>).

Available agruments are Array2xml::EMPTY_SELF_CLOSING or Array2xml::EMPTY_FULL

setFilterNumbersInTags(bool|array $data)

Remove numbers from element names.

Possible args are:

  • boolean TRUE to remove numbers from ALL elements
  • array contains node names that need filtering.

This is a easy workaround to have identically named elements in your XML built from an array.

For example, let's build an XML with 3 image nodes:

//list of our images
$images = array('image1.jpg', 'image3.jpg', 'image3.jpg');
// input array
$data = array(); 
for($i=0;$i<3;$i++){
	$data['image'.$i] = $images[$i];
}
$array2xml = new array2xml();
$array2xml->setFilterNumbersInTags(array('image'));

$xml = array2xml->convert($data);

That's it! Now we have a nasty XML with 3 identically named nodes in it.

Testing

phpunit Tests/Array2xmlTest.php

统计信息

  • 总下载量: 919
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 1
  • 点击次数: 2
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 1
  • Watchers: 4
  • Forks: 21
  • 开发语言: PHP

其他信息

  • 授权协议: BSD-2-Clause
  • 更新时间: 2015-03-18

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固