当处理基于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 提供了多种方式来生成和操作 XML 数据。这些功能非常强大,允许你创建、读取、修改和保存 XML 文档。在 PHP 中生成 XML 的常用方法包括使用 DOM...本压缩包即是PHP中使用 DOMDocument 生成XML的示例程序文件。
接着,可以使用`createElement`方法创建XML元素,并使用`appendChild`方法将元素添加到文档中。例如,创建一个名为`book`的元素: ```php $root = $xml->createElement('books'); $xml->appendChild($root); ``` ...
1. **加载XML文件**:使用`DOMDocument`的`loadXML`或`load`方法加载XML文件: ```php $doc = new DOMDocument(); $doc->load('input.xml'); ``` 2. **遍历DOM树**:通过DOMDocument对象,我们可以获取XML的根...
它提供了许多方法来解析XML字符串,加载XML文件,以及创建、查询和修改XML文档的节点。 3. **加载XML**: 使用`DOMDocument::loadXML()`方法可以将XML字符串解析为DOM树,而`DOMDocument::load()`方法则用于从文件...
2. **加载XML文件**:然后,使用`load()`方法加载XML文件到DOMDocument对象中。 ```php $doc->load('path_to_your_xml_file.xml'); ``` 3. **解析XML**:一旦XML文件加载成功,我们可以通过DOMDocument对象的...
本文将详细介绍如何使用PHP动态生成XML文件。 #### 二、基本概念 1. **DOMDocument类**:DOM(Document Object Model)是用于处理XML的一种API。PHP中的`DOMDocument`类提供了用于创建、修改和查询XML文档的方法。...
首先,使用DOMDocument类生成XML文档的基本步骤包括创建DOMDocument实例、定义XML文档结构(根节点、子节点等)、设置编码类型、保存XML到字符串或文件。以下是一个简单的示例代码: ```php $doc = new DOMDocument...
本文将围绕使用PHP读取XML文件,重点介绍两种常用的方法:DOMDocument和simplexml。 首先,我们来了解DOMDocument类。DOMDocument是PHP的内置类,属于Document Object Model(文档对象模型)的一部分,主要用于解析...
1. **加载XML文档**:首先使用`DOMDocument`类加载XML文档。 ```php $dom = new DOMDocument(); $dom->load('example.xml'); // 从文件加载 // 或者 $dom->loadXML('<root><child>Text</child></root>'); // 从...
这对于动态创建XML文件非常有用。 接下来,我们关注如何在PHP中自动添加XML内容。假设我们有一个已经存在的XML文件,我们可以使用DOMDocument或SimpleXMLElement来添加新的元素。以下是一个使用DOMDocument的例子:...
在PHP中,创建XML文件通常涉及以下几个步骤: 1. 实例化DOMDocument对象:`$dom = new DOMDocument('1.0');` 这里'1.0'代表XML的版本号。 2. 设置格式输出:`$dom->formatOutput = true;` 这样在保存XML时,会自动...
例如,你可以使用`DOMDocument::loadXML()`或`DOMDocument::load()`方法加载XML数据。一旦加载,你就可以通过`getElementsByTagName()`、`getElementById()`或`xpath`表达式来查找特定的元素。`DOMElement`类提供了...
在PHP中创建XML文件是一种基本的技能,本篇将介绍如何使用PHP的DOMDocument类和SimpleXMLElement类来创建XML文件。 首先,我们来谈谈DOMDocument类。DOMDocument类是PHP中用于操作DOM(文档对象模型)的一个标准类...
PHP提供了多种处理XML的工具和类库,如SimpleXMLElement和DOMDocument,它们允许开发者轻松地读取、修改和创建XML文档。 首先,我们来看SimpleXMLElement,它是PHP的一个内置类,用于解析XML数据并提供一个简单的...
例如,使用DOM库创建XML文档: ```php $xml = new DOMDocument(); $books = $xml->createElement('books'); $xml->appendChild($books); $book1 = $xml->createElement('book'); $author1 = $xml->createElement('...
此外,文档还推荐了其他一些PHP相关专题供感兴趣的朋友学习,这些专题包括针对XML文件的操作技巧、PHP数组和字符串的使用方法、错误与异常处理、基本语法入门教程以及面向对象编程等。通过这些内容的学习,开发者...
创建XML文件时,可以先实例化 `SimpleXMLElement` 对象,然后添加属性和子节点。例如: ```php $xml = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><article></article>'); foreach ($data_...
首先,PHP提供了内置的`DOMDocument`类和`DOMXpath`类,它们可以用来解析XML文档并提取数据。以下是一个基本的转换过程: 1. **创建DOMDocument对象**: ```php $xmlString = '<root><item id="1">Item 1</item>...