PHP数组转换为xml怎样做,具体步骤过程是什么
Admin 2022-10-08 群英技术资讯 980 次浏览
这篇文章将为大家详细讲解有关“PHP数组转换为xml怎样做,具体步骤过程是什么”的知识,下文有详细的介绍,小编觉得挺实用的,对大家学习或工作或许有帮助,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。说到XML很多人对这个语言还是不熟悉的,它表示一种标记语言。在XML语法上,它与HTML类似,但是HTML中的元素是固定的,并且用户可以定制XML标签。对于数组的学习也有一定的积累,那么我们可以把数组转换为XML的形式,在正式开始数组的转换前,可以先对XML进行一些了解。
1、说明
XML 是可扩展标记语言(EXtensible Markup Language)。
XML 是一种很像HTML的标记语言。
XML 的设计宗旨是传输数据,而不是显示数据。
XML 标签没有被预定义。您需要自行定义标签。
XML 被设计为具有自我描述性。
XML 是 W3C 的推荐标准。
2、转换实例
<?php
namespace Library;
/**
* 最外层的当个元素可以自定义标签,内层单个元素统一标签为$defaultSingleOuter
*/
class XML
{
private static $version = "1.0";
private static $encoding = 'utf-8';
// 最外层
private static $outer = '';
// 最外层属性
private static $outerAttribut = [];
// 单个元素的外层
private static $singleOuter = '';
// 单个元素外层的属性
private static $singleOuterAttribut = [];
private static $defaultSingleOuter = 'item';
public function A2XML(array $data)
{
$xml = new \XMLWriter();
$this->begin($xml);
// 写数据
if (is_numeric(current(array_keys($data)))) {
foreach ($data as $key => $val) {
$this->singleBegin($xml, true);
$this->writeElement($xml, $val);
$this->singleEnd($xml);
}
} else {
$this->writeElement($xml, $data);
}
return $this->end($xml);
}
/**
* 写数据
*
* @param \XMLWriter $xml
* @param $data
*/
private function writeElement(\XMLWriter &$xml, $data)
{
if (!is_array($data)) {
$xml->writeElement(self::$defaultSingleOuter, $data);
return;
}
foreach ($data as $key => $val) {
if (is_numeric($key)) {
is_array($val) && $this->singleBegin($xml);
$this->writeElement($xml, $val);
is_array($val) && $this->singleEnd($xml);
continue;
}
if (is_array($val)) {
$xml->startElement($key);
$this->writeElement($xml, $val);
$xml->endElement();
continue;
}
$xml->writeElement($key, $val);
}
}
/**
* 开始
*
* @param \XMLWriter $xml
*/
private function begin(\XMLWriter &$xml)
{
$xml->openMemory();
$xml->startDocument(self::$version, self::$encoding);
if (self::$outer) {
$xml->startElement(self::$outer);
}
if (self::$outerAttribut) {
foreach (self::$outerAttribut as $key => $val) {
$xml->writeAttribute($key, $val);
}
}
}
/**
* 结束
*
* @param \XMLWriter $xml
* @return string
*/
private function end(\XMLWriter $xml)
{
if (self::$outer) {
$xml->endElement();
}
$xml->endDocument();
header("Content-type: text/xml");
//取得缓冲区里的xml字符串
return $xml->outputMemory(true);
}
/**
* 单个元素的开始
*
* @param \XMLWriter $xml
* @param bool $first
*/
private function singleBegin(\XMLWriter $xml, $first = false)
{
if ($first) {
$xml->startElement(self::$singleOuter ?: self::$defaultSingleOuter);
if (self::$singleOuterAttribut) {
foreach (self::$singleOuterAttribut as $key => $val) {
$xml->writeAttribute($key, $val);
}
}
} else {
$xml->startElement(self::$defaultSingleOuter);
}
}
/**
* 单个元素的结束
*
* @param \XMLWriter $xml
*/
private function singleEnd(\XMLWriter $xml)
{
$xml->endElement();
}
public function setVersion($version = 1.0)
{
self::$version = $version;
return $this;
}
public function setEncoding($encoding = 'utf-8')
{
self::$version = $encoding;
return $this;
}
public function setOuter($outer = '')
{
self::$outer = $outer;
return $this;
}
public function setOuterAttribut(array $outerAttribut = [])
{
self::$outerAttribut = $outerAttribut;
return $this;
}
public function setSingleOuter($singleOuter)
{
self::$singleOuter = $singleOuter;
return $this;
}
public function setSingleOuterAttribut(array $singleOuterAttribut = [])
{
self::$singleOuterAttribut = $singleOuterAttribut;
return $this;
}
public function setDefaultSingleOuter($defaultSingleOuter)
{
self::$defaultSingleOuter = $defaultSingleOuter;
return $this;
}
}
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
在laravel中,使用队列可以解决大并发和多种语言通信接口等问题。可以将耗时的任务或者不能同时大量并行的任务封装起来传输到消息队列中,由处理程序不断从消息队列中提取消息并进行处理,这样用过消息队列就可以使得在大并发情况下不再堵塞。
phpstorm的使用方法:1、点击Create New Project;2、选择PHP Empty Project,新建空目录;3、新建PHP File;4、编写代码;5、配置PHP解释器;6、浏览器运行预览。
PHP怎么添加隐藏后门?很多PHP初学者可能对于PHP后门隐藏不是很清楚,因此,这篇文章就给大家分享一些PHP隐藏后门的方法,下面是具体的用法级示例,有需要的朋友一起的来学习一下吧。
为了防止用户利用机器人自动注册、登录、灌水,现在的网站一般都采用了验证码技术,就是将一串随机产生的数字或符号,生成一幅图片,图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。
本文实例讲述了PHP设计模式工厂模式Factory。下文的讲解详细,步骤过程清晰,对大家进一步学习和理解相关知识有一定的帮助。有这方面学习需要的朋友就继续往下看吧!
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008