`
xubaoguo
  • 浏览: 79426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

如何使用PHP DOMDocument创建动态XML文件

阅读更多
当处理基于XML应用程序时,开发者经常需要建立XML编码数据结构。例如,Web中基于用户输入的XML状态模板,服务器请求XML语句,以及基于运行时间参数的客户响应。

尽管XML数据结构的构建比较费时,但如果使用成熟的PHP DOM应用程序接口,一切都会变得简单明了。本文将向你介绍PHP DOM应用程序接口的主要功能,演示如何生成一个正确的XML完整文件并将其保存到磁盘中。

创建文档类型声明

一般而言,XML声明放在文档顶部。在PHP中声明十分简单:只需实例化一个DOM文档类的对象并赋予它一个版本号。查看程序清单A:

程序清单 A

<?php
// create doctype
$dom = new DOMDocument("1.0");

// display document in browser as plain text
// display document in browser as plain text
// for readability purposes
header("Content-Type: text/plain");

// save and display tree
echo $dom->saveXML();
?>

请注意DOM文档对象的saveXML()方法。稍后我再详细介绍这一方法,现在你只需要简单认识到它用于输出XML文档的当前快照到一个文件或浏览器。在本例,为增强可读性,我已经将ASCII码文本直接输出至浏览器。在实际应用中,可将以text/XML头文件发送到浏览器。

如在浏览器中查看输出,你可看到如下代码:

<?xml version="1.0"?>

添加元素和文本节点

XML真正强大的功能是来自其元素与封装的内容。幸运的是,一旦你初始化DOM文档,很多操作变得很简单。此过程包含如下两步骤:

•对想添加的每一元素或文本节点,通过元素名或文本内容调用DOM文档对象的createElement()或createTextNode()方法。这将创建对应于元素或文本节点的新对象。
•通过调用节点的appendChild()方法,并把其传递给上一步中创建的对象,并在XML文档树中将元素或文本节点添加到父节点。
以下范例将清楚地演示这2步骤,请查看程序清单B。

程序清单 B

<?php
// create doctype
$dom = new DOMDocument("1.0");

// display document in browser as plain text
// for readability purposes
header("Content-Type: text/plain");

// create root element
$root = $dom->createElement("toppings");
$dom->appendChild($root);

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create text node
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);

// save and display tree
echo $dom->saveXML();
?>

这 里,我首先创建一个名字为<toppings>的根元素,并使它归于XML头文件中。然后,我建立名为<item>的元素并使它 归于根元素。最后,我又创建一个值为“pepperoni”的文本节点并使它归于<item>元素。最终结果如下:

<?xml version="1.0"?>
<toppings>
?<item>pepperoni</item>
</toppings>

如果你想添加另外一个topping,只需创建另外一个<item>并添加不同的内容,如程序清单C所示。

程序清单C

<?php
// create doctype
$dom = new DOMDocument("1.0");

// display document in browser as plain text
// for readability purposes
header("Content-Type: text/plain");

// create root element
$root = $dom->createElement("toppings");
$dom->appendChild($root);

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create text node
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create another text node
$text = $dom->createTextNode("tomato");
$item->appendChild($text);

// save and display tree
echo $dom->saveXML();
?>

以下是执行程序清单C后的输出:

<?xml version="1.0"?>
<toppings>
?<item>pepperoni</item>
?<item>tomato</item>
</toppings>

添加属性

通过使用属性,你也可以添加适合的信息到元素。对于PHP DOM API,添加属性需要两步:首先用DOM文档对象的createAttribute()方法创建拥有此属性名字的节点,然后将文档节点添加到拥有属性值的属性节点。详见程序清单D。

程序清单 D

<?php
// create doctype
$dom = new DOMDocument("1.0");

// display document in browser as plain text
// for readability purposes
header("Content-Type: text/plain");
// create root element
$root = $dom->createElement("toppings");
$dom->appendChild($root);

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create text node
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);

// create attribute node
$price = $dom->createAttribute("price");
$item->appendChild($price);

// create attribute value node
$priceValue = $dom->createTextNode("4");
$price->appendChild($priceValue);

// save and display tree
echo $dom->saveXML();
?>

输出如下所示:

<?xml version="1.0"?>
<toppings>
?<item price="4">pepperoni</item>
</toppings>

添加CDATA模块和过程向导

虽然不经常使用CDATA模块和过程向导,但是通过调用DOM文档对象的createCDATASection()和 createProcessingInstruction()方法, PHP API 也能很好地支持CDATA和过程向导,请见程序清单E。

程序清单 E

<?php
// create doctype
// create doctype
$dom = new DOMDocument("1.0");

// display document in browser as plain text
// for readability purposes
header("Content-Type: text/plain");

// create root element
$root = $dom->createElement("toppings");
$dom->appendChild($root);

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create text node
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);

// create attribute node
$price = $dom->createAttribute("price");
$item->appendChild($price);

// create attribute value node
$priceValue = $dom->createTextNode("4");
$price->appendChild($priceValue);

// create CDATA section
$cdata = $dom->createCDATASection(" Customer requests that pizza be sliced into 16 square pieces ");
$root->appendChild($cdata);

// create PI
$pi = $dom->createProcessingInstruction("pizza", "bake()");
$root->appendChild($pi);

// save and display tree
echo $dom->saveXML();
?>

输出如下所示:

<?xml version="1.0"?>
<toppings>
<item price="4">pepperoni</item>
<![CDATA[
      Customer requests that pizza be sliced into 16 square pieces
]]>
<?pizza bake()?>
</toppings>

保存结果

一旦已经实现你的目标,就可以将结果保存在一个文件或存储于PHP的变量。通过调用带有文件名的save()方法可以将结果保存在文件中,而通过调用saveXML()方法可存储于PHP的变量。请参考以下实例(程序清单F):

程序清单 F

<?php
// create doctype
$dom = new DOMDocument("1.0");

// create root element
$root = $dom->createElement("toppings");
$dom->appendChild($root);
$dom->formatOutput=true;

// create child element
$item = $dom->createElement("item");
$root->appendChild($item);

// create text node
$text = $dom->createTextNode("pepperoni");
$item->appendChild($text);

// create attribute node
$price = $dom->createAttribute("price");
$item->appendChild($price);

// create attribute value node
$priceValue = $dom->createTextNode("4");
$price->appendChild($priceValue);

// create CDATA section
$cdata = $dom->createCDATASection(" Customer requests that pizza be

sliced into 16 square pieces ");
$root->appendChild($cdata);

// create PI
$pi = $dom->createProcessingInstruction("pizza", "bake()");
$root->appendChild($pi);

// save tree to file
$dom->save("order.xml");

// save tree to string
$order = $dom->save("order.xml");
?>
分享到:
评论

相关推荐

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

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

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

    接着,可以使用`createElement`方法创建XML元素,并使用`appendChild`方法将元素添加到文档中。例如,创建一个名为`book`的元素: ```php $root = $xml-&gt;createElement('books'); $xml-&gt;appendChild($root); ``` ...

    利用DOM读写XML

    1. **加载XML文件**:使用`DOMDocument`的`loadXML`或`load`方法加载XML文件: ```php $doc = new DOMDocument(); $doc-&gt;load('input.xml'); ``` 2. **遍历DOM树**:通过DOMDocument对象,我们可以获取XML的根...

    PHP100视频教程89:PHP.XML.的.DOMDocument.读取功能.rar

    它提供了许多方法来解析XML字符串,加载XML文件,以及创建、查询和修改XML文档的节点。 3. **加载XML**: 使用`DOMDocument::loadXML()`方法可以将XML字符串解析为DOM树,而`DOMDocument::load()`方法则用于从文件...

    php读取xml文件类

    2. **加载XML文件**:然后,使用`load()`方法加载XML文件到DOMDocument对象中。 ```php $doc-&gt;load('path_to_your_xml_file.xml'); ``` 3. **解析XML**:一旦XML文件加载成功,我们可以通过DOMDocument对象的...

    php动态生成xml文件

    本文将详细介绍如何使用PHP动态生成XML文件。 #### 二、基本概念 1. **DOMDocument类**:DOM(Document Object Model)是用于处理XML的一种API。PHP中的`DOMDocument`类提供了用于创建、修改和查询XML文档的方法。...

    PHP基于DOMDocument解析和生成xml的方法分析

    首先,使用DOMDocument类生成XML文档的基本步骤包括创建DOMDocument实例、定义XML文档结构(根节点、子节点等)、设置编码类型、保存XML到字符串或文件。以下是一个简单的示例代码: ```php $doc = new DOMDocument...

    PHP读取XML文件的方法实例总结【DOMDocument及simplexml方法】

    本文将围绕使用PHP读取XML文件,重点介绍两种常用的方法:DOMDocument和simplexml。 首先,我们来了解DOMDocument类。DOMDocument是PHP的内置类,属于Document Object Model(文档对象模型)的一部分,主要用于解析...

    PHP DOM扩展库:SimpleXML 解析XML文档.md

    1. **加载XML文档**:首先使用`DOMDocument`类加载XML文档。 ```php $dom = new DOMDocument(); $dom-&gt;load('example.xml'); // 从文件加载 // 或者 $dom-&gt;loadXML('&lt;root&gt;&lt;child&gt;Text&lt;/child&gt;&lt;/root&gt;'); // 从...

    xml.rar_php xml_xml php

    这对于动态创建XML文件非常有用。 接下来,我们关注如何在PHP中自动添加XML内容。假设我们有一个已经存在的XML文件,我们可以使用DOMDocument或SimpleXMLElement来添加新的元素。以下是一个使用DOMDocument的例子:...

    PHP原生DOM对象操作XML.pdf

    在PHP中,创建XML文件通常涉及以下几个步骤: 1. 实例化DOMDocument对象:`$dom = new DOMDocument('1.0');` 这里'1.0'代表XML的版本号。 2. 设置格式输出:`$dom-&gt;formatOutput = true;` 这样在保存XML时,会自动...

    XMLDOM.rar_PHP DOM_数据批量处理

    例如,你可以使用`DOMDocument::loadXML()`或`DOMDocument::load()`方法加载XML数据。一旦加载,你就可以通过`getElementsByTagName()`、`getElementById()`或`xpath`表达式来查找特定的元素。`DOMElement`类提供了...

    PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】

    在PHP中创建XML文件是一种基本的技能,本篇将介绍如何使用PHP的DOMDocument类和SimpleXMLElement类来创建XML文件。 首先,我们来谈谈DOMDocument类。DOMDocument类是PHP中用于操作DOM(文档对象模型)的一个标准类...

    php 处理 xml 文件

    PHP提供了多种处理XML的工具和类库,如SimpleXMLElement和DOMDocument,它们允许开发者轻松地读取、修改和创建XML文档。 首先,我们来看SimpleXMLElement,它是PHP的一个内置类,用于解析XML数据并提供一个简单的...

    PHP读取和编写XMLDOM

    例如,使用DOM库创建XML文档: ```php $xml = new DOMDocument(); $books = $xml-&gt;createElement('books'); $xml-&gt;appendChild($books); $book1 = $xml-&gt;createElement('book'); $author1 = $xml-&gt;createElement('...

    PHP基于DOM创建xml文档的方法示例

    此外,文档还推荐了其他一些PHP相关专题供感兴趣的朋友学习,这些专题包括针对XML文件的操作技巧、PHP数组和字符串的使用方法、错误与异常处理、基本语法入门教程以及面向对象编程等。通过这些内容的学习,开发者...

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

    创建XML文件时,可以先实例化 `SimpleXMLElement` 对象,然后添加属性和子节点。例如: ```php $xml = new SimpleXMLElement('&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;article&gt;&lt;/article&gt;'); foreach ($data_...

    php xml转数组

    首先,PHP提供了内置的`DOMDocument`类和`DOMXpath`类,它们可以用来解析XML文档并提取数据。以下是一个基本的转换过程: 1. **创建DOMDocument对象**: ```php $xmlString = '&lt;root&gt;&lt;item id="1"&gt;Item 1&lt;/item&gt;...

Global site tag (gtag.js) - Google Analytics