PHP中的生成XML文件的4种方法
来源:互联网 发布:中国网络巨头有哪几个 编辑:程序博客网 时间:2024/05/17 01:09
<?xml version=
"1.0"
encoding=
"utf-8"
?>
<article>
<item>
<title size=
"1"
>title1</title>
<content>content1</content>
<pubdate>2009-10-11</pubdate>
</item>
<item>
<title size=
"1"
>title2</title>
<content>content2</content>
<pubdate>2009-11-11</pubdate>
</item>
</article>
【直接生成字符串】
方法1:使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件。这是最原始的生成XML的方法,不过有效!
PHP代码如下:
<?PHP
$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
.=
"<article>\n"
;
foreach
(
$data_array
as
$data
) {
$xml
.= create_item(
$data
[
'title'
],
$title_size
,
$data
[
'content'
],
$data
[
'pubdate'
]);
}
$xml
.=
"</article>\n"
;
echo
$xml
;
// 创建XML单项
function
create_item(
$title_data
,
$title_size
,
$content_data
,
$pubdate_data
)
{
$item
=
"<item>\n"
;
$item
.=
"<title size=\""
.
$title_size
.
"\">"
.
$title_data
.
"</title>\n"
;
$item
.=
"<content>"
.
$content_data
.
"</content>\n"
;
$item
.=
" <pubdate>"
.
$pubdate_data
.
"</pubdate>\n"
;
$item
.=
"</item>\n"
;
return
$item
;
}
?>
【DomDocument】
方法2:使用DomDocument生成XML文件
创建节点使用createElement方法,
创建文本内容使用createTextNode方法,
添加子节点使用appendChild方法,
创建属性使用createAttribute方法
PHP代码如下:
<?PHP
$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
?>
【XMLWriter】
方法3:使用XMLWriter类创建XML文件
此方法在PHP 5.1.2后有效
另外,它可以输出多种编码的XML,但是输入只能是utf-8
PHP代码如下:
<?PHP
$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
();
?>
【SimpleXML】
方法4:使用SimpleXML创建XML文档
<?PHP
$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 version=
'1.0'
encoding=
'utf-8'
?>
<article>
</article>
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();
?>
0 0
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP中的生成XML文件的4种方法
- PHP生成xml文件的几种方法
- PHP生成xml文件方法
- PHP生成的XML文件
- php 生成xml的方法
- PHP生成xml的方法
- PHP中3种生成XML文件方法的速度比较
- PHP 生成 XML文件
- php 生成xml文件
- php生成xml文件
- PHP+FFMPEG自动转码H264标准Mp4文件
- Phpcmsv9本地视频转码字段
- php学习
- 《Windows核心编程》——三 内核对象
- php学习笔记(二)面向对象编程
- PHP中的生成XML文件的4种方法
- java“JUC锁”
- snoopy(强大的PHP采集类) 详细介绍
- yii2 AR常用数据操作
- php底层变量的实现
- PHP的常量就是静态变量
- php超全局变量server
- [Android] Proguard And DexGuard
- Python类继承的高级特性