﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>PHP博客-eBusiness Techinology</title><link>http://www.phpweblog.net/ebusiness/</link><description /><language>zh-cn</language><lastBuildDate>Fri, 19 Mar 2010 18:06:28 GMT</lastBuildDate><pubDate>Fri, 19 Mar 2010 18:06:28 GMT</pubDate><ttl>60</ttl><item><title>require(),include(),require_once()和include_once()的异同</title><link>http://www.phpweblog.net/ebusiness/archive/2007/03/13/975.html</link><dc:creator>青岛小哥</dc:creator><author>青岛小哥</author><pubDate>Tue, 13 Mar 2007 07:50:00 GMT</pubDate><guid>http://www.phpweblog.net/ebusiness/archive/2007/03/13/975.html</guid><wfw:comment>http://www.phpweblog.net/ebusiness/comments/975.html</wfw:comment><comments>http://www.phpweblog.net/ebusiness/archive/2007/03/13/975.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.phpweblog.net/ebusiness/comments/commentRss/975.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/ebusiness/services/trackbacks/975.html</trackback:ping><description><![CDATA[
		<font color="#ffffff">
				<font style="BACKGROUND-COLOR: #000000">
						<font size="2">
								<span class="bold">require(),include(),require_once()和include_once()的异同</span>
								<br />
								<br />
						</font>
				</font>
		</font>
		<div style="FONT-SIZE: 12px">
				<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">require()和include()有许多相似之处，也有些不同。理解它们的不同点非常重要，否则很容易犯错误。<br /><br />我把这两个语句放在一起介绍，读者可以比较学习。<br />1.require()语句<br />     require()语句用于指定的文件代替语句本身，就象C语言中的include()语句一样。如果php配置文件php.ini中的URL fopen wrappers 是打开的(默认情况下是打开的)，就可以使用URL来指定文件的位置从而实现远程文件的调用。<br />     有一点就是使用require()和include()语句时要特别的注意。那就是在被包含的文件中，处理器是按照html模式来解释其中的内容的，处理完被包含的内容后又恢复到php模式。所以如果需要在被包含文件中使用php语法，就要使用正确的php开始和结束标记来把这些语句包含进去。<br />     require()和include()知识php中的一种语言特性，而不是函数。它们和函数有许多不同的地方。<br />比如：require()所包含的文件中不能包含控制结构，而且不能使用return这样的语句。在require()所包含的文件中使用return语句会产生处理错误。<br />     不象include()语句，require()语句会无条件地读取它所包含的文件的内容，而不管这些语句是否执行。所以如果你想按照不同的条件包含不同的文件，就必须使用include()语句。当然，如果require()所在位置的语句不被执行，require()所包含的文件中的语句也不会被执行。<br />     require()不能在循环体中根据条件的不同而包含不同的文件。require()语句只会在第一次执行时调用它所包含的文件中的内容替换本身这条语句，当再次被执行时只能执行第一次所包含的语句。但是include()语句可以在循环体中来包含不同的文件。<br />     require()语句中的变量继承require()语句所在位置的变量作用域。所有在require()语句的位置可以访问的变量，在 require()语句所包含的文件中都可以访问。如果require()语句位于一个函数内部，那么被包含文件内的语句都相当于定义在函数内部。<br />     require()语句在PHP程序执行前就会将使用require引用的文件读入，因此require通常放到程序的开始处。因此要特别注意一点，require语句有一点强，不管程序是否真的需要引用的文件，只要你使用require语句，它都会把他们包含进来！即使你是在条件控制语句中使用这个函数进行包含，那怕是那个条件不为真，引用文件也会被包含进来！形成了僵尸，在运行过程中这些僵尸是不起任何可见作用的，但是很明显它会加重负担，所以这一点要特别注意！如果使用require语句发生了包含错误，那么程序将输出出错信息并停止运行！！ <br /><br />     如果require()语句通过声明文件的URL来包含远程文件，而且远程服务器按照php代码来解释该文件的话，本地php文件中所包含的内容是在远程服务器上处理以后的结果。例如：<br />     /*<br />        这个例子假设some_server服务器可以解释.php文件，而不对.txt文件进行解释。在远程文件中  <br />     需要变量$varfirst和$varsecond<br />     */<br />    /*不能正确执行，远程服务器不处理.txt文件*/<br />    require("http://some_server/file.txt?varfirst=1&amp;varsecond=2");<br />    <br />    /*不正确，这样只能在本地机上寻找file.php文件*/<br />    require("file.php?varfirst=1&amp;varsecond=2");<br /><br />    /*正确的语句*/<br />    require("http://some_server/file.php?varfirst=1&amp;varsecond=2");<br />    <br />    $varfirst=1;<br />    $varsecond=2;<br />    require("file.txt"); /*正确的语句*/<br />    require("file.php"); /*正确的语句*/<br />     本来在php3.0中，require()所包含的文件可以使用return语句，但条件是return语句不能出现在{}内部，而必须出现在被包含文件的全局范围内。在php4.0中已经取消了require()的这个功能，但是仍然可以使用include()来实现。<br /><br />2.include()语句<br />     include()语句和require()语句有许多相同的地方。凡是在上边require()语句中没有明确说明不能适用于include() 的部分外，require()语句的功能完全适用于include()语句。下边介绍require()语句所没有的include()语句的功能和特点。<br />     include语句只有在被执行时才会读入要包含的文件。在错误处理方便，使用include语句，如果发生包含错误，程序将跳过include语句，虽然会显示错误信息但是程序还是会继续执行！<br />      php处理器会在每次遇到include()语句时，对它进行重新处理，所以可以根据不同情况的，在条件控制语句和循环语句中使用include()来包含不同的文件。<br />      例如：<br />    &lt;?php<br />        $files=array('first.php','second.php','third.php');<br />        for($i=0;$i&lt;count($files);$i++)<br />        {<br />            include $files[$i];<br />        } <br />    ?&gt; <br />      在php3.0和php4.0中include()语句所包含的文件中都可以使用return语句来返回一个值，并停止执行被包含文件下面的内容。但 php3.0和php4.0在处理这样的情况时有所不同。在php3.0中return语句不能包含在{}内，除非它在一个函数中，因为这时它表示函数的返回值而不是文件的返回值。而在php4.0中就没有了这样的限制，用户甚至可以在文件中返回一个数字，就象函数的返回值一样。这样的语句在<br /><br />php3.0中通常会报告错误。以下举例说明：<br />      假设被包含的文件为test.inc和主文件main.php位于一个目录中。test.inc的内容如下：<br />test.inc<br />&lt;?php<br />    echo "Before the return&lt;br&gt;\n";<br />    if(1)<br />    { <br />        return 27; <br />    }<br />    echo "After the return&lt;br&gt;\n";<br />?&gt;<br /><br />假设在main.php文件中包含下面的语句：<br />&lt;?php<br />    $retval=include('test.inc');<br />    echo "File returned:'$retval'&lt;br&gt;\n";<br />?&gt;<br />     php3.0解释器会在第二行报告错误，而不能得到include()语句的返回值。但在php4.0中会得到下面的结果：<br />    Before the return<br />    File returned: '27'<br />    下边假设main.php改为：<br />&lt;?php<br />    include('test.inc');<br />    echo "Back in main.html&lt;br&gt;\n";<br />?&gt;<br />    在php4.0中的输出结果是:<br />    Before the return<br />    Back in main.html<br />    <br />   在php5.0中的输出结果也是:<br />    Before the return<br />    Back in main.html<br /><br />    在php3.0中的输出结果是:<br />    Before the return<br />    27Back in main.html<br />  <br />    Parse error:parse error in /apache/htdocs/phptest/main.html on line 5<br />    <br />    出现上面的错误是因为return语句位于{}内部而且不是一个函数内部。如果把{}去掉，使它位于test.inc的最外层，输出结果是：<br />    Before the return<br />    27Back in main.html<br />    之所以出现27，是因为在php3.0中不支持include()返回。<br /><br />3.require_once()和include_once()语句<br />    require_once()和include_once()语句分别对应于require()和include()语句。require_once() 和include_once()语句主要用于需要包含多个文件时，可以有效地避免把同一段代码包含进去而出现函数或变量重复定义的错误。例如：如果创建两个文件util.inc和fool.inc，程序代码分别为：<br />   util.inc:<br />    &lt;?php <br />       define(PHPVERSION,floor(phpversion()));<br />       echo "GLOBALS ARE NICE&lt;br&gt;\n";<br />       function goodTea()<br />       {<br />           return "Olong tea tasts good!";<br />       }<br />   ?&gt;<br />    和fool.inc:<br />   &lt;?php<br />       require ("util.inc");<br />       function showVar($var)<br />       {<br />           if(PHPVERSION==4)<br />           {<br />               print_r($var);<br />           }<br />           else<br />           {<br />               var_dump($var);<br />           }<br />       }<br />   ?&gt;<br />    然后在error_require.php中包含这两个文件：<br />    &lt;?php<br />        require("fool.inc");<br />        require("util.inc");//此句会产生一个错误<br />        $foo=array("1",array("complex","quaternion"));<br />        echo "this is requiring util.inc again which is also&lt;br&gt;\n";<br />        echo "required in fool.inc\n";<br />        echo "Running goodTea:".goodTea()."&lt;br&gt;\n";<br />        echo "Printing foo:&lt;br&gt;\n";<br />        showVar($foo);<br />    ?&gt;<br />     当运行error_require.php时，输出结果如下：<br />     GLOBALS ARE NICE<br />     GLOBALS ARE NICE<br /><br />    Fatal error:Cannot redeclare goodTea() in util.inc on line 4<br />     <br />    如果使用require_once()语句来代替 require()语句,就不会出现上面的错误。我们把error_require.php和fool.inc中的require()语句改为 require_once()语句并重命名为error_require_once.php,这是显示结果如下：<br />    GLOBALS ARE NICE<br />    this is requiring util.inc again which is also<br />    required in fool.inc Running goodTea:Olong tea tastes good!<br />    Printing foo:<br />    Array([0] =&gt; 1 [1] =&gt; Array ([0] =&gt; complex [1] = quaternion))<br />    <br />    include_once()语句的语法和include()语句类似，主要区别也是避免多次包含一个文件而引起函数或变量的重复定义。<br /><br />    require_once语句有一个引用链，它可以保证文件加入你的程序仅仅只有一次，而且会避开变量值和函数名之间的冲突。<br />   <br />    和require_once语句一样，include_once语句把include的功能扩展了。在程序执行期间，将指定的文件包含进来，如果从文件引用进来的程序先前已经包含过的时候，include_once()就不会把它再包含进来。也就是仅仅可以引用同一个文件一次！ <br /><br />    include_once() 语句在脚本执行期间包含并运行指定文件。此行为和 include() 语句类似，唯一区别是如果该文件中的代码已经被包含了，则不会再次包含。如同此语句名字暗示的那样，只会包含一次。 <br /><br />include_once() 应该用于在脚本执行期间同一个文件有可能被包含超过一次的情况下，想确保它只被包含一次以避免函数重定义，变量重新赋值等问题。 <br /><br />使用 require_once() 和 include_once() 的更多例子见最新的 PHP 源程序发行包中的 PEAR 代码。 <br /><br />返回值和 include() 相同。如果文件已被包含，本函数返回 TRUE。 <br /><br />注: include_once() 是 PHP 4.0.1pl2 中新加入的。 <br /><br />注: 要注意 include_once() 和 require_once() 在大小写不敏感的操作系统中（例如 Windows）的行为<br /><br />可能不是所期望的。 <br />例子：  include_once() 在 Windows 下不区分大小写<br /><br />&lt;?php<br />include_once("a.php"); // this will include a.php<br />include_once("A.php"); // this will include a.php again on Windows! (PHP 4 only)<br />?&gt;  <br /><br />此行为在 PHP 5 中改了，路径先被规格化，因此 C:\PROGRA~1\A.php 和 C:\Program Files\a.php 的实现一样，文件只会被包含一次。 <br /><br />    如果要包含的文件不存在，include提示notice，然后继续执行下面的语句，require提示致命错误并且退出。<br /><br />　　win32平台下它们都是先包含后执行，所以被包含文件里最好不要再有include或require语句，这样会造成目录混乱。或许Linux下情况不同，暂时还没测试。<br /><br />　　如果一个文件不想被包含多次可以使用include_once或require_once## 读取，可以写入文档数据。<br />&lt;?php<br />function r($file_name) {<br />　$filenum=@fopen($file_name,"r");<br />　@flock($filenum,LOCK_SH);<br />　$file_data=@fread($filenum,filesize($file_name));<br />　@fclose($filenum);<br />　return $file_data;<br />}<br />function w($file_name,$data,$method="w"){<br />　$filenum=@fopen($file_name,$method);<br />　flock($filenum,LOCK_EX);<br />　$file_data=fwrite($filenum,$data);<br />　fclose($filenum);<br />　return $file_data;<br />}<br />?&gt;</font>
		</div>
<img src ="http://www.phpweblog.net/ebusiness/aggbug/975.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/ebusiness/" target="_blank">青岛小哥</a> 2007-03-13 15:50 <a href="http://www.phpweblog.net/ebusiness/archive/2007/03/13/975.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何使用PHP DOM创建动态的XML文件</title><link>http://www.phpweblog.net/ebusiness/archive/2007/03/13/974.html</link><dc:creator>青岛小哥</dc:creator><author>青岛小哥</author><pubDate>Tue, 13 Mar 2007 07:28:00 GMT</pubDate><guid>http://www.phpweblog.net/ebusiness/archive/2007/03/13/974.html</guid><wfw:comment>http://www.phpweblog.net/ebusiness/comments/974.html</wfw:comment><comments>http://www.phpweblog.net/ebusiness/archive/2007/03/13/974.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.phpweblog.net/ebusiness/comments/commentRss/974.html</wfw:commentRss><trackback:ping>http://www.phpweblog.net/ebusiness/services/trackbacks/974.html</trackback:ping><description><![CDATA[
		<div class="content">
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">当处理基于XML应用程序时，开发者经常需要建立XML编码数据结构。例如，Web中基于用户输入的XML状态模板，服务器请求XML语句，以及基于运行时间参数的客户响应。</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">尽管XML数据结构的构建比较费时，但如果使用成熟的PHP DOM应用程序接口，一切都会变得简单明了。本文将向你介绍PHP DOM应用程序接口的主要功能，演示如何生成一个正确的XML完整文件并将其保存到磁盘中。</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>创建文档类型声明</strong>
												<strong>
												</strong>
										</font>
								</font>
						</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">一般而言，XML声明放在文档顶部。在PHP中声明十分简单：只需实例化一个DOM文档类的对象并赋予它一个版本号。查看<strong>程序清单</strong><strong>A</strong><strong>：</strong></font>
								</font>
						</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>程序清单</strong>
												<strong>A</strong>
										</font>
								</font>
						</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// display document in browser as plain text <br />// display document in browser as plain text <br />// for readability purposes<br />header("Content-Type: text/plain");<br /><br />// save and display tree<br />echo $dom-&gt;saveXML();<br />?&gt;</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">请注意DOM文档对象的<em>saveXML()</em>方法。稍后我再详细介绍这一方法，现在你只需要简单认识到它用于输出XML文档的当前快照到一个文件或浏览器。在本例，为增强可读性，我已经将ASCII码文本直接输出至浏览器。在实际应用中，可将以text/XML头文件发送到浏览器。</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">如在浏览器中查看输出，你可看到如下代码：</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?xml version="1.0"?&gt;</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>添加元素和文本节点</strong>
												<strong>
												</strong>
										</font>
								</font>
						</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">XML真正强大的功能是来自其元素与封装的内容。幸运的是，一旦你初始化DOM文档，很多操作变得很简单。此过程包含如下两步骤：</font>
				</p>
				<ul>
						<li>
								<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">对想添加的每一元素或文本节点，通过元素名或文本内容调用DOM文档对象的<em>createElement</em>()或<em>createTextNode()</em>方法。这将创建对应于元素或文本节点的新对象。</font>
						</li>
						<li>
								<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">通过调用节点的<em>appendChild()</em>方法，并把其传递给上一步中创建的对象，并在XML文档树中将元素或文本节点添加到父节点。</font>
						</li>
				</ul>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">以下范例将清楚地演示这2步骤，请查看<strong>程序清单</strong><strong>B</strong>。</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>程序清单</strong>
												<strong>B</strong>
										</font>
								</font>
						</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// display document in browser as plain text <br />// for readability purposes<br />header("Content-Type: text/plain");<br /><br />// create root element<br />$root = $dom-&gt;createElement("toppings");<br />$dom-&gt;appendChild($root);<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create text node<br />$text = $dom-&gt;createTextNode("pepperoni");<br />$item-&gt;appendChild($text);<br /><br />// save and display tree<br />echo $dom-&gt;saveXML();<br />?&gt; </font>
				</p>
				<p class="textblack" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">这里，我首先创建一个名字为&lt;toppings&gt;的根元素，并使它归于XML头文件中。然后，我建立名为&lt;item&gt;的元素并使它归于根元素。最后，我又创建一个值为“pepperoni”的文本节点并使它归于&lt;item&gt;元素。最终结果如下：</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?xml version="1.0"?&gt;<br />&lt;toppings&gt;<br />?&lt;item&gt;pepperoni&lt;/item&gt;<br />&lt;/toppings&gt;</font>
				</p>
				<p class="textblack" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">如果你想添加另外一个topping，只需创建另外一个&lt;item&gt;并添加不同的内容，如程序清单C所示。</font>
				</p>
				<p class="textblack" align="left">
						<strong>
								<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">程序清单C</font>
						</strong>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// display document in browser as plain text <br />// for readability purposes<br />header("Content-Type: text/plain");<br /><br />// create root element<br />$root = $dom-&gt;createElement("toppings");<br />$dom-&gt;appendChild($root);<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create text node<br />$text = $dom-&gt;createTextNode("pepperoni");<br />$item-&gt;appendChild($text);<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create another text node<br />$text = $dom-&gt;createTextNode("tomato");<br />$item-&gt;appendChild($text);<br /><br />// save and display tree<br />echo $dom-&gt;saveXML();<br />?&gt;</font>
				</p>
				<p class="textblack" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">以下是执行程序清单C后的输出：</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?xml version="1.0"?&gt;<br />&lt;toppings&gt;<br />?&lt;item&gt;pepperoni&lt;/item&gt;<br />?&lt;item&gt;tomato&lt;/item&gt;<br />&lt;/toppings&gt;</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>添加属性</strong>
												<strong>
												</strong>
										</font>
								</font>
						</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">通过使用属性，你也可以添加适合的信息到元素。对于PHP DOM API，添加属性需要两步：首先用DOM文档对象的<em>createAttribute()</em>方法创建拥有此属性名字的节点，然后将文档节点添加到拥有属性值的属性节点。详见程序清单D。</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>程序清单</strong>
												<strong>D</strong>
										</font>
								</font>
						</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// display document in browser as plain text <br />// for readability purposes<br />header("Content-Type: text/plain");<br />// create root element<br />$root = $dom-&gt;createElement("toppings");<br />$dom-&gt;appendChild($root);<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create text node<br />$text = $dom-&gt;createTextNode("pepperoni");<br />$item-&gt;appendChild($text);<br /><br />// create attribute node<br />$price = $dom-&gt;createAttribute("price");<br />$item-&gt;appendChild($price);<br /><br />// create attribute value node<br />$priceValue = $dom-&gt;createTextNode("4");<br />$price-&gt;appendChild($priceValue);<br /><br />// save and display tree<br />echo $dom-&gt;saveXML();<br />?&gt;</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">输出如下所示：</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?xml version="1.0"?&gt;<br />&lt;toppings&gt;<br />?&lt;item price="4"&gt;pepperoni&lt;/item&gt;<br />&lt;/toppings&gt;</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>添加</strong>
												<strong>CDATA</strong>
												<strong>模块和过程向导</strong>
												<strong>
												</strong>
										</font>
								</font>
						</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">虽然不经常使用CDATA模块和过程向导，但是通过调用DOM文档对象的<em>createCDATASection()</em>和<em>createProcessingInstruction()</em>方法<em>，</em> PHP API 也能很好地支持CDATA和过程向导，请见程序清单E。</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>程序清单</strong>
												<strong>E</strong>
										</font>
								</font>
						</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// display document in browser as plain text <br />// for readability purposes<br />header("Content-Type: text/plain");<br /><br />// create root element<br />$root = $dom-&gt;createElement("toppings");<br />$dom-&gt;appendChild($root);<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create text node<br />$text = $dom-&gt;createTextNode("pepperoni");<br />$item-&gt;appendChild($text);<br /><br />// create attribute node<br />$price = $dom-&gt;createAttribute("price");<br />$item-&gt;appendChild($price);<br /><br />// create attribute value node<br />$priceValue = $dom-&gt;createTextNode("4");<br />$price-&gt;appendChild($priceValue);<br /><br />// create CDATA section<br />$cdata = $dom-&gt;createCDATASection(" Customer requests that pizza be sliced into 16 square pieces ");<br />$root-&gt;appendChild($cdata);<br /><br />// create PI<br />$pi = $dom-&gt;createProcessingInstruction("pizza", "bake()");<br />$root-&gt;appendChild($pi);<br /><br />// save and display tree<br />echo $dom-&gt;saveXML();<br />?&gt;</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">输出如下所示：</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?xml version="1.0"?&gt;<br />&lt;toppings&gt;<br />  &lt;item price="4"&gt;pepperoni&lt;/item&gt;<br />  &lt;![CDATA[<br />      Customer requests that pizza be sliced into 16 square pieces<br />]]&gt;<br />  &lt;?pizza bake()?&gt;<br />&lt;/toppings&gt;</font>
				</p>
				<p align="left">
						<strong>
								<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">保存结果</font>
						</strong>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">一旦已经实现你的目标，就可以将结果保存在一个文件或存储于PHP的变量。通过调用带有文件名的<em>save()</em>方法可以将结果保存在文件中，而通过调用<em>saveXML()</em>方法可存储于PHP的变量。请参考以下实例(程序清单F)：</font>
				</p>
				<p align="left">
						<font color="#ffffff">
								<font size="2">
										<font style="BACKGROUND-COLOR: #000000">
												<strong>程序清单</strong>
												<strong>F</strong>
										</font>
								</font>
						</font>
				</p>
				<p class="textblue">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">&lt;?php<br />// create doctype<br />$dom = new DOMDocument("1.0");<br /><br />// create root element<br />$root = $dom-&gt;createElement("toppings");<br />$dom-&gt;appendChild($root);<br />$dom-&gt;formatOutput=true;<br /><br />// create child element<br />$item = $dom-&gt;createElement("item");<br />$root-&gt;appendChild($item);<br /><br />// create text node<br />$text = $dom-&gt;createTextNode("pepperoni");<br />$item-&gt;appendChild($text);<br /><br />// create attribute node<br />$price = $dom-&gt;createAttribute("price");<br />$item-&gt;appendChild($price);<br /><br />// create attribute value node<br />$priceValue = $dom-&gt;createTextNode("4");<br />$price-&gt;appendChild($priceValue);<br /><br />// create CDATA section<br />$cdata = $dom-&gt;createCDATASection(" Customer requests that pizza be</font>
				</p>
				<p class="textblue" align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">sliced into 16 square pieces ");<br />$root-&gt;appendChild($cdata);<br /><br />// create PI<br />$pi = $dom-&gt;createProcessingInstruction("pizza", "bake()");<br />$root-&gt;appendChild($pi);<br /><br />// save tree to file<br />$dom-&gt;save("order.xml");<br /><br />// save tree to string<br />$order = $dom-&gt;save("order.xml");<br />?&gt;</font>
				</p>
				<p align="left">
						<font style="BACKGROUND-COLOR: #000000" color="#ffffff" size="2">希望你能在本文发现有用的东西，并在以后使用XML时应用到这些方法。</font>
				</p>
		</div>
<img src ="http://www.phpweblog.net/ebusiness/aggbug/974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.phpweblog.net/ebusiness/" target="_blank">青岛小哥</a> 2007-03-13 15:28 <a href="http://www.phpweblog.net/ebusiness/archive/2007/03/13/974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>