PHP中的生成XML文件的4种方法(转)
<?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();
?>
转自:http://www.oschina.net/code/snippet_110138_4727
PHP中的生成XML文件的4种方法(转)的更多相关文章
- PHP中的生成XML文件的4种方法分享
生成如下XML串 Xml代码 <?xml version="1.0" encoding="utf-8"?> <article> < ...
- .net中创建xml文件的两种方法
.net中创建xml文件的两种方法 方法1:根据xml结构一步一步构建xml文档,保存文件(动态方式) 方法2:直接加载xml结构,保存文件(固定方式) 方法1:动态创建xml文档 根据传递的值,构建 ...
- PHP读写XML文件的四种方法
PHP对XML文件进行读写操作的方法一共有四种,分别是:字符串方式直接读写.DOMDocument读写. XMLWrite写和XMLReader读.SimpleXML读写,本文将依次对这四种方法进行介 ...
- 生成mif文件的几种方法总结
mif文件就是存储器初始化文件,即memory initialization file,用来配置RAM或ROM中的数据.生成QuartusII11.0可用的mif文件,有如下几种方式: 方法1:利用Q ...
- 精----Java读取xml文件的四种方法
xml文件: Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VA ...
- JAVA 中加载属性文件的4种方法
小总结 : 这个集合属性可以反序列化, 把持久化数据读出来, 输入流中放入要操作的文件! p.load加载这个输入流! p.getProperty( key) 根据这个键获得值! 补充 : web工程 ...
- java读取xml文件的四种方法
Xml代码 <?xml version="1.0" encoding="GB2312"?> <RESULT> <VALUE> ...
- Html中嵌套其他HTML文件的几种方法(转)
给大家整理了3个方法,一个是HTML的iframe标签,别两个是JS引用.比如要在arr.html文件里引用index.html文件,方法如下. HTML引用方法: <iframe name=& ...
- [转].net创建XML文件的两种方法
原文发布时间为:2009-08-26 -- 来源于本人的百度文章 [由搬家工具导入] 方法一:按照XML的结构一步一步的构建XML文档. 通过.Net FrameWork SDK中的命名空间&q ...
随机推荐
- poj 2406 Power Strings (kmp 中 next 数组的应用||后缀数组)
http://poj.org/problem?id=2406 Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submiss ...
- bzoj 4127: Abs 树链剖分
4127: Abs Time Limit: 40 Sec Memory Limit: 256 MBSubmit: 11 Solved: 5[Submit][Status][Discuss] Des ...
- hdu 3717
思路:二分答案,然后模拟消灭石头的过程: 如果单纯的暴力模拟的话,肯定会T的: 所以要用到一定的技巧来维护: 在网上看到大神们用O(n)的复杂度来优化,真心orz: 原理是这样的:用一个变量sum_2 ...
- 周末“干活”之 Mesos Meetup
周末两天都是大雾霾天,作为运营也不能在家宅,告别了技术就得腿儿勤点儿. 非常感谢 Linker 的 Sam Chen 和 数人科技 的 CTO 共同组织的Mesos Meetup,OneAPM 最帅的 ...
- MySQL性能调优与架构设计-架构篇
架构篇(1) 读书笔记 1.Scale(扩展):从数据库来看,就是让数据库能够提供更强的服务能力 ScaleOut: 是通过增加处理节点的方式来提高整体处理能力 ScaleUp: 是通过增加当前处理节 ...
- Android Integer.decode()和Intger.valueof()
decode合适用来分析数字 可以分析 8进:010=>分析后为 8 10进:10=>分析后为 10 16进:#10|0X10|0x10=>分析后是 16 而valueof 只 ...
- Android Button悬浮在SurfaceView上
实现Button悬浮于与SurfaceView之上实现 注意:你实现的SurfaceView和android中的Button,EditView是同级的,不能把一个包含在另一个里面 1.创建自己的Sur ...
- Android中改变dialog的显示的位置和大小
private void setDialogSize(Dialog dg) { Window dialogWindow = dg.getWindow(); WindowManager.LayoutPa ...
- 微信JSSDK与录音相关的坑
欢迎各位转载, 以让微信团队重视这些恼人的BUG. 请注明出处微信JSSDK与录音相关的坑 by lzl124631x 最近一直在做微信JSSDK与录音相关的功能开发, 遇到了各种奇尺大坑, 时不时冷 ...
- LinearLayout按下(pressed)或获取焦点(focused)时背景设置不同颜色或图片
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id=&qu ...