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


在PHP中生成XML文件,有多种方式可以实现,以下是四种常见且简洁的方法:

### 1. 使用SimpleXML扩展

SimpleXML是PHP的一个扩展,用于简化XML的生成和解析。


<?php
$xml = new SimpleXMLElement('<?xml version="1.0"?><data></data>');
$book = $xml->addChild('book');
$book->addChild('title', 'Great Expectations');
$book->addChild('author', 'Charles Dickens');

header('Content-Type: text/xml');
echo $xml->asXML();
?>

### 2. 使用DOMDocument类

DOMDocument提供了创建和修改DOM结构的功能,包括XML文档。


<?php
$dom = new DOMDocument('1.0', 'UTF-8');
$dom->formatOutput = true;

$root = $dom->createElement('data');
$dom->appendChild($root);

$book = $dom->createElement('book');
$title = $dom->createElement('title', 'Great Expectations');
$author = $dom->createElement('author', 'Charles Dickens');

$book->appendChild($title);
$book->appendChild($author);
$root->appendChild($book);

echo $dom->saveXML();
?>

### 3. 使用XMLWriter类

XMLWriter提供了向前写入XML数据的方法,适用于需要逐步构建大型XML文档的场景。


<?php
$xml = new XMLWriter();
$xml->openURI('php://output');
$xml->startDocument('1.0', 'UTF-8');
$xml->startElement('data');

$xml->startElement('book');
$xml->writeElement('title', 'Great Expectations');
$xml->writeElement('author', 'Charles Dickens');
$xml->endElement(); // 结束book元素

$xml->endElement(); // 结束data元素
$xml->endDocument();
$xml->flush();

header('Content-Type: text/xml');
?>

### 4. 手动拼接字符串

虽然不推荐用于复杂的XML生成,但在某些简单场景下,直接拼接字符串也是一种可行的方法。


<?php
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<data>
    <book>
        <title>Great Expectations</title>
        <author>Charles Dickens</author>
    </book>
</data>';

header('Content-Type: text/xml');
echo $xml;
?>

每种方法都有其适用场景,你可以根据自己的需求选择合适的方法。