php如何新建xml文件,PHP中的生成XML文件的4种方法分享

生成如下XML串

Xml代码

title1

content1

2009-10-11

title2

content2

2009-11-11

方法I.【直接生成字符串】使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。这是最原始的生成XML的方法,不过有效!

$data_array = array(

array(

'title' => 'title1',

'content' => 'content1',

'pubdate' => '2009-10-11',

),

array(

'title' => 'title2',

'content' => 'content2',

'pubdate' => '2009-11-11',

)

);

$title_size = 1;

$xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";

$xml .= "\n";

foreach ($data_array as $data) {

$xml .= create_item($data['title'], $title_size, $data['content'], $data['pubdate']);

}

$xml .= "\n";

echo $xml;

//  创建XML单项

function create_item($title_data, $title_size, $content_data, $pubdate_data)

{

$item = "\n";

$item .= "

" . $title_data . "\n";

$item .= "" . $content_data . "\n";

$item .= " " . $pubdate_data . "\n";

$item .= "\n";

return $item;

}

?>

方法2:【DomDocument】使用DomDocument生成XML文件,创建节点使用createElement方法,创建文本内容使用createTextNode方法,添加子节点使用appendChild方法,创建属性使用createAttribute方法

$data_array = array(

array(

'title' => 'title1',

'content' => 'content1',

'pubdate' => '2009-10-11',

),

array(

'title' => 'title2',

'content' => 'content2',

'pubdate' => '2009-11-11',

)

);

//  属性数组

$attribute_array = array(

'title' => array(

'size' => 1

)

);

//  创建一个XML文档并设置XML版本和编码。。

$dom=new DomDocument('1.0', 'utf-8');

//  创建根节点

$article = $dom->createElement('article');

$dom->appendchild($article);

foreach ($data_array as $data) {

$item = $dom->createElement('item');

$article->appendchild($item);

create_item($dom, $item, $data, $attribute_array);

}

echo $dom->saveXML();

function create_item($dom, $item, $data, $attribute) {

if (is_array($data)) {

foreach ($data as $key => $val) {

//  创建元素

$$key = $dom->createElement($key);

$item->appendchild($$key);

//  创建元素值

$text = $dom->createTextNode($val);

$$key->appendchild($text);

if (isset($attribute[$key])) {

//  如果此字段存在相关属性需要设置

foreach ($attribute[$key] as $akey => $row) {

//  创建属性节点

$$akey = $dom->createAttribute($akey);

$$key->appendchild($$akey);

// 创建属性值节点

$aval = $dom->createTextNode($row);

$$akey->appendChild($aval);

}

}   //  end if

}

}   //  end if

}   //  end function

?>

方法3:【XMLWriter】使用XMLWriter类创建XML文件,此方法在PHP 5.1.2后有效。另外,它可以输出多种编码的XML,但是输入只能是utf-8

$data_array = array(

array(

'title' => 'title1',

'content' => 'content1',

'pubdate' => '2009-10-11',

),

array(

'title' => 'title2',

'content' => 'content2',

'pubdate' => '2009-11-11',

)

);

//  属性数组

$attribute_array = array(

'title' => array(

'size' => 1

)

);

$xml = new XMLWriter();

$xml->openUri("php://output");

//  输出方式,也可以设置为某个xml文件地址,直接输出成文件

$xml->setIndentString('  ');

$xml->setIndent(true);

$xml->startDocument('1.0', 'utf-8');

//  开始创建文件

//  根结点

$xml->startElement('article');

foreach ($data_array as $data) {

$xml->startElement('item');

if (is_array($data)) {

foreach ($data as $key => $row) {

$xml->startElement($key);

if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))

{

foreach ($attribute_array[$key] as $akey => $aval) {

//  设置属性值

$xml->writeAttribute($akey, $aval);

}

}

$xml->text($row);   //  设置内容

$xml->endElement(); // $key

}

}

$xml->endElement(); //  item

}

$xml->endElement(); //  article

$xml->endDocument();

$xml->flush();

?>

方法4: 【SimpleXML】使用SimpleXML创建XML文档

$data_array = array(

array(

'title' => 'title1',

'content' => 'content1',

'pubdate' => '2009-10-11',

),

array(

'title' => 'title2',

'content' => 'content2',

'pubdate' => '2009-11-11',

)

);

//  属性数组

$attribute_array = array(

'title' => array(

'size' => 1

)

);

$string = <<

XML;

$xml = simplexml_load_string($string);

foreach ($data_array as $data) {

$item = $xml->addChild('item');

if (is_array($data)) {

foreach ($data as $key => $row) {

$node = $item->addChild($key, $row);

if (isset($attribute_array[$key]) && is_array($attribute_array[$key]))

{

foreach ($attribute_array[$key] as $akey => $aval) {

//  设置属性值

$node->addAttribute($akey, $aval);

}

}

}

}

}

echo $xml->asXML();

?>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/534840.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

组态王能直接读取仪表数据吗_液晶多功能网络电力仪表PD800H

液晶多功能网络电力仪表PD800H-H44三相三线多功用电力表面&#xff0c;一般也被称作网络电力表面&#xff0c;它是一种数字化的监控设备&#xff0c;其功用集成了电量测量&#xff0c;情况监控&#xff0c;远程通讯为一体&#xff0c;作业原理上选用了现代核算机技术和数字信号…

python程序显示自己的版权_手把手教你Pycharm皮肤主题及个性化设置,python程序员必备-Go语言中文社区...

1.设置IDE皮肤主题File -> Settings -> Appearance -> Theme -> 选择“Alloy.IDEA Theme”根据自己的喜好设置字体大小&#xff0c;以及样式。2.修改字体大小File -> Settings > Editor -> Colors & Fonts -> Font -> Size -> 设置为“14”3…

java多线程activemq,多线程JMS客户端ActiveMQ

我正在使用以下代码创建多个JMS会话&#xff0c;以供多个使用者使用消息。我的问题是代码以单线程方式运行。即使消息存在于队列中&#xff0c;第二个线程也无法接收任何内容&#xff0c;而是继续轮询。同时&#xff0c;第一个线程完成对第一批的处理&#xff0c;然后返回并使用…

python cnn 实例_基于CNN的纹理合成实践【附python实现】

Q0: Preliminary knowledge of Texture SynthesisBaseline请见此处&#xff0c;下文所有的代码修改均建立此代码基础之上。1. 纹理合成简述​纹理合成(Texture Systhesis)技术主要应用于计算机图形学等领域&#xff0c;被用于模拟几何模型的表面细节、增强绘制模型的真实感。不…

php使用jasperreport,php-报表引擎指南(Pentaho,JasperReports,BIRT)

我在各种论坛和他们的网站上花费了大约4-5个小时,研究可以帮助我发展的报告工具.我是使用这种工具的新手,可以使用一些特定的指导.我正在开发一个Web应用程序,该应用程序将托管在一台服务器上,但是多个用户可以通过登录进行访问.每个用户将拥有自己的帐户,并且只能访问仅与与其…

python中dlib库_python 基于dlib库的人脸检测的实现

本周暂时比较清闲&#xff0c;可以保持每日一更的速度。国外身份证项目新增需求&#xff0c;检测出身份证正面的人脸。最开始考虑mobilenet-ssd&#xff0c;经同事提醒&#xff0c;有现成的人脸库dlib&#xff0c;那就用传统方法尝试一下。dlib安装dlib的安装小费一波周折&…

php养老院管理系统,XYCMS养老院建站系统 v3.8

XYCMS养老院建站系统是一个专为养老院而设计的养老院建筑系统。中心信息管理&#xff1a;包括基本信息管理&#xff0c;添加&#xff0c;问答中心信息管理新闻动态管理&#xff1a;管理新闻信息内容&#xff0c;管理相关分类&#xff0c;添加或者删除生活环境内容管理&#xff…

php 修改文件访问时间,PHP中获取文件创建日期、修改日期、访问时间的方法

php获取文件创建时间、修改时间常用代码filemtime ( string filename )返回文件上次被修改的时间&#xff0c;出错时返回 FALSE。时间以 Unix 时间戳的方式返回&#xff0c;可用于 date()。例如&#xff1a;$afilemtime("log.txt");echo "修改时间&#xff1a;&…

超过响应缓冲区限制_Nginx如何限制并发连接数和连接请求数?

全网最全1500份Java学习资料、500份BAT面试真题&#xff1a;关注公众号&#xff0c;输入“面试题”&#xff0c;获取提取码&#xff01;首先讲解两个算发&#xff1a;算法思想是&#xff1a;令牌以固定速率产生&#xff0c;并缓存到令牌桶中&#xff1b;令牌桶放满时&#xff0…

Php公钥加密data是空,php 生成加密公钥加密私钥实例详解

php 生成加密公钥加密私钥实例详解生成公钥私钥 win下必须要openssl.cof支持 liunx一般已自带安装$config array(//"digest_alg" > "sha512","private_key_bits" > 512, //字节数 512 1024 2048 4096 等"private_key_type" >…

python句柄无效_subprocess.Popen 运行windows命令出现“句柄无效”报错的解决方法

【代码笔记】iOS-关于UIFont的一些define一,效果图. 二,工程图. 三,代码. RootViewController.h #import interface RootViewController ...JQuery Datatables Dom 和 Language 参数详细说明http://linleizi.iteye.com/blog/2086435 *********************************** Data …

java日期函数精确到日,java日期时间函数分享

前言&#xff1a;对于新手程序员的我来说&#xff0c;写业务代码是现在的日常&#xff0c;在此过程中经常需要对日期时间进行处理&#xff0c;我挑了几个较有用的日期处理函数分享给大家。正文&#xff1a;1、将某格式的时间字符串转化成毫秒时间戳表示的字符串&#xff1a;pub…

python变量区变量保存与加载_python – Flask:使用全局变量将数据文件加载到内存中...

我有一个大的XML文件,它被打开,加载到内存中,然后由Python类关闭.简化示例如下所示&#xff1a;class Dictionary():def __init__(self,filename):f open(filename)self.contents f.readlines()f.close()def getDefinitionForWord(self,word):# returns a word,using etree p…

php 顺丰接口实例,顺丰BSP接口PHP开发注意事项

1&#xff0c;xml报文不用附加"<?xml version"1.0" encoding"UTF-8" ?>"&#xff0c;不支持&#xff0c;会报格式错误。2&#xff0c;提交服务器时要重点注意。直接使用curl方式的&#xff0c;一定要把数据做http_build_query&#xff0…

跨域产生的原因和解决方法_板式家具开料机加工过程产生崩边原因及解决方法...

家具厂数控开料机加工材料的时候会遇到材料崩边的问题&#xff0c;下面我们系统的分析下产生的原因以及解决的办法产生崩边现象的原因&#xff1f;其一是材料本身问题。目前除了实木家具&#xff0c;目前使用较多的就是 板式贴皮的材料&#xff0c;板材的优点就是标准化生产&am…

facade 门面 php,php设计模式之门面(Facade)模式

该模式属于结构型模式什么是门面模式&#xff1f;定义&#xff1a;门面模式(有时候也称为外观模式)是指提供一个统一的接口去访问多个子系统的多个不同的接口&#xff0c;它为子系统中的一组接口提供一个统一的高层接口。外部与子系统的通信是通过一个门面(Facade)对象进行。其…

架构师一般做到多少岁_《迷茫中的我们该如何突破瓶颈——成长为一名架构师》...

如何成长为一名架构师&#xff1f;架构师是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展&#xff0c;为目标客户提供更为全面的需求清单。很多程序员想成为一名架…

php-fpm初始化失败,FPM的初始化 - [ PHP7的内核剖析 ] - 在线原生手册 - php中文网

FPM的初始化接下来看下fpm的启动流程&#xff0c;从main()函数开始&#xff1a;//sapi/fpm/fpm/fpm_main.cint main(int argc, char *argv[]){... //注册SAPI:将全局变量sapi_module设置为cgi_sapi_modulesapi_startup(&cgi_sapi_module);... //执行php_module_staru…

python 高级语言特性_Pytohon学习笔记(一)Python编程语言历史及特性

Python编程语言历史及特性编程语言:用户:问题空间计算机: 解决问题解空间抽象机器代码-->微码编程-->高级语言shell编程:ptyhon控制语言:胶水语言适合领域:web,Django字节码:bytecode面向过程:以指令为中心&#xff0c;由指令处理数据 如何组织代码结局问题面向对象:以数…

php laravel 返回统一格式,封装的统一的Laravel响应类,返回数据类

封装的统一的Laravel返回数据类namespace App\Library;class Response{const OK 0;const BAD_REQUEST 1000;const PARAM_ERROR 1001;const SQL_ERROR 4000;const FORBIDDEN 4003;const SERVER_ERROR 5000;public static $errMsg [self::BAD_REQUEST > 请求错误,self:…