`
再逢山水
  • 浏览: 157011 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

PHP中的生成XML文件的4种方法

    博客分类:
  • LAMP
阅读更多
<?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();
?> 
分享到:
评论

相关推荐

    PHP中的生成XML文件的4种方法分享

    以下是从标题和描述中提取的四种PHP生成XML文件的方法: 1. **直接生成字符串**: 这是最基础的方法,通过构建字符串来生成XML。首先定义一个数据数组,然后逐个遍历数组,将数据转换成XML结构的字符串。在示例...

    php生成xml文件

    php生成xml文件

    php动态生成xml文件

    ### PHP动态生成XML文件知识点详解 #### 一、概述 在Web开发中,XML(可扩展标记语言)是一种用于标记数据的语言,与HTML相似但更侧重于数据存储和传输。PHP作为一种广泛使用的服务器端脚本语言,能够轻松地处理...

    php加载和生成json和生成xml文件,并带有ajax分页效果,带图带数据库

    生成XML文件则涉及创建XML元素和属性,然后保存到文件中。以下示例创建了一个简单的XML文档: ```php $xml = new DOMDocument('1.0', 'UTF-8'); $root = $xml-&gt;createElement('users'); $xml-&gt;appendChild($root); ...

    数据库数据生成xml

    数据库数据生成XML是一种常见的数据转换方法,用于在不同的系统间传递和交换信息。XML(Extensible Markup Language)是一种标记语言,它的设计目标是传输和存储数据,而不是显示数据。XML的结构化特性使得它成为跨...

    php从数据库中读取数据生成xml

    ### PHP从数据库中读取数据生成XML的知识点详解 #### 一、PHP连接MySQL数据库 在给定的脚本中,我们首先看到的是通过PHP连接MySQL数据库的操作。这部分代码使用了较旧的`mysql_`扩展,而不是推荐的`mysqli_`或`PDO...

    php 生成xml文件

    使用纯粹的PHP代码生成字符串,并把这个字符串写入一个以XML为后缀的文件 使用XMLWriter类创建XML文件

    PHP使用 DOMDocument 生成XML的示例程序文件

    PHP 提供了多种方式来生成和操作 XML 数据。这些功能非常强大,允许你创建、读取、修改和保存 XML 文档。在 PHP 中生成 XML 的常用方法包括使用 DOM...本压缩包即是PHP中使用 DOMDocument 生成XML的示例程序文件。

    crxml:一个用于生成xml格式数据php类库,支持生成rss.zip

    `crxml` 是一个专门为PHP设计的类库,用于生成XML格式的数据,尤其值得一提的是,它还支持生成RSS(Really Simple Syndication)格式的文件,这在创建新闻聚合、博客订阅源等方面非常有用。 `crxml` 类库的核心功能...

    php操作xml的三种方法

    但是,由于它不支持XML的创建,所以如果需要生成XML文档,你需要使用其他方法。 2. **DOMDocument** DOM(Document Object Model)是一种W3C标准,提供了一种结构化表示XML文档的方式。PHP的DOMDocument类实现了这...

    php生成标准xml类

    $xmlGenerator-&gt;addItemElement('description', '本文介绍如何使用PHP生成XML文件'); $xmlGenerator-&gt;addItemElement('pubDate', date(DATE_RSS)); $xmlGenerator-&gt;addItemElement('link', '...

    php生成xml并读取xml中的数据已经测试号

    在PHP中,处理XML数据是常见的任务,无论是生成XML文件还是从中提取信息。本文将详细介绍如何使用PHP进行XML的生成与读取,并结合已测试的有效代码示例来帮助理解。 一、PHP生成XML 1. 创建XML文档对象:首先,...

    PHP100视频教程90:PHP DOM 创建生成多功能 XML文件

    **PHP100视频教程90:PHP DOM 创建生成多功能 XML文件** 在这一教程中,我们将深入探讨如何使用PHP的DOM扩展来创建和操作XML文件。XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,它具有...

    PHP DOM生成XML文件

    PHP DOM生成XML文件 一、实验环境 1、环境搭建:Windows 8+Apache 2.4.18+MySQL 5.7.11+PHP 7.1.0 。 2、文本编辑器:Sublime Text3。 二、主要技术 本实验主要使用PHP 7的DOM组件创建生成一个XML文件。

    PHP+XML生成家谱树

    在这个实例中,我们将通过PHP处理XML文件来动态生成家谱树。 首先,我们需要理解XML(Extensible Markup Language)的作用。XML是一种用于标记数据的语言,它允许我们以结构化的方式存储和传输信息。在我们的家谱树...

    PHP中3种生成XML文件方法的速度效率比较

    在PHP中,生成XML文件是常见的数据序列化和交换任务,尤其在Web服务和数据存储中。本篇文章将探讨三种不同的方法:直接写入、使用DOMDocument和使用SimpleXML,并通过性能测试比较它们的效率。 1. **直接写入XML**...

    生成xml文件

    本篇文章将深入探讨如何生成XML文件,包括基本的XML结构、创建XML文件的方法以及使用编程语言如Python、Java进行XML文件生成。 一、XML的基本结构 XML文件的开头通常包含XML声明,用于指定使用的XML版本和字符编码...

Global site tag (gtag.js) - Google Analytics