AI写作智能体 自主规划任务,支持联网查询和网页读取,多模态高效创作各类分析报告、商业计划、营销方案、教学内容等。 广告
# XMLWriter(5.1+内置默认开启) 这是XMLWriter扩展。它封装了libxml xmlWriter API 此扩展需要[libxml](https://www.php.net/manual/zh/book.libxml.php)PHP 扩展(默认开启) - [XMLWriter :: endAttribute](https://www.php.net/manual/en/function.xmlwriter-end-attribute.php)—结束属性 - [XMLWriter :: endCdata](https://www.php.net/manual/en/function.xmlwriter-end-cdata.php)—结束当前的CDATA - [XMLWriter :: endComment](https://www.php.net/manual/en/function.xmlwriter-end-comment.php)—创建结束注释 - [XMLWriter :: endDocument](https://www.php.net/manual/en/function.xmlwriter-end-document.php)—结束当前文档 - [XMLWriter :: endDtdAttlist](https://www.php.net/manual/en/function.xmlwriter-end-dtd-attlist.php)—结束当前DTD AttList - [XMLWriter :: endDtdElement](https://www.php.net/manual/en/function.xmlwriter-end-dtd-element.php)—结束当前DTD元素 - [XMLWriter :: endDtdEntity](https://www.php.net/manual/en/function.xmlwriter-end-dtd-entity.php)—结束当前DTD实体 - [XMLWriter :: endDtd](https://www.php.net/manual/en/function.xmlwriter-end-dtd.php)—结束当前DTD - [XMLWriter :: endElement](https://www.php.net/manual/en/function.xmlwriter-end-element.php)—结束当前元素 - [XMLWriter :: endPi](https://www.php.net/manual/en/function.xmlwriter-end-pi.php)—结束当前PI - [XMLWriter :: flush](https://www.php.net/manual/en/function.xmlwriter-flush.php)—刷新当前缓冲区 - [XMLWriter :: fullEndElement](https://www.php.net/manual/en/function.xmlwriter-full-end-element.php)—结束当前元素 - [XMLWriter :: openMemory](https://www.php.net/manual/en/function.xmlwriter-open-memory.php)—使用内存用于字符串输出创建新的xmlwriter - [XMLWriter :: openUri](https://www.php.net/manual/en/function.xmlwriter-open-uri.php)—使用源uri创建新的xmlwriter以进行输出 - [XMLWriter :: outputMemory](https://www.php.net/manual/en/function.xmlwriter-output-memory.php)—返回当前缓冲区 - [XMLWriter :: setIndentString](https://www.php.net/manual/en/function.xmlwriter-set-indent-string.php)—设置用于缩进的字符串 - [XMLWriter :: setIndent](https://www.php.net/manual/en/function.xmlwriter-set-indent.php)—启用/禁用缩进 - [XMLWriter :: startAttributeNs](https://www.php.net/manual/en/function.xmlwriter-start-attribute-ns.php)—创建开始命名空间的属性 - [XMLWriter :: startAttribute](https://www.php.net/manual/en/function.xmlwriter-start-attribute.php)—创建开始属性 - [XMLWriter :: startCdata](https://www.php.net/manual/en/function.xmlwriter-start-cdata.php)—创建开始CDATA标记 - [XMLWriter :: startComment](https://www.php.net/manual/en/function.xmlwriter-start-comment.php)—创建开始注释 - [XMLWriter :: startDocument](https://www.php.net/manual/en/function.xmlwriter-start-document.php)—创建文档标签 - [XMLWriter :: startDtdAttlist](https://www.php.net/manual/en/function.xmlwriter-start-dtd-attlist.php)—创建开始DTD AttList - [XMLWriter :: startDtdElement](https://www.php.net/manual/en/function.xmlwriter-start-dtd-element.php)—创建开始DTD元素 - [XMLWriter :: startDtdEntity](https://www.php.net/manual/en/function.xmlwriter-start-dtd-entity.php)—创建开始DTD实体 - [XMLWriter :: startDtd](https://www.php.net/manual/en/function.xmlwriter-start-dtd.php)—创建开始DTD标记 - [XMLWriter :: startElementNs](https://www.php.net/manual/en/function.xmlwriter-start-element-ns.php)—创建开始命名空间的元素标签 - [XMLWriter :: startElement](https://www.php.net/manual/en/function.xmlwriter-start-element.php)—创建开始元素标签 - [XMLWriter :: startPi](https://www.php.net/manual/en/function.xmlwriter-start-pi.php)—创建开始PI标签 - [XMLWriter :: text](https://www.php.net/manual/en/function.xmlwriter-text.php)—编写文本 - [XMLWriter :: writeAttributeNs](https://www.php.net/manual/en/function.xmlwriter-write-attribute-ns.php)—写入完整的命名空间属性 - [XMLWriter :: writeAttribute](https://www.php.net/manual/en/function.xmlwriter-write-attribute.php)—写完整属性 - [XMLWriter :: writeCdata](https://www.php.net/manual/en/function.xmlwriter-write-cdata.php)—写入完整的CDATA标记 - [XMLWriter :: writeComment](https://www.php.net/manual/en/function.xmlwriter-write-comment.php)—写完整的注释标签 - [XMLWriter :: writeDtdAttlist](https://www.php.net/manual/en/function.xmlwriter-write-dtd-attlist.php)—编写完整的DTD AttList标记 - [XMLWriter :: writeDtdElement](https://www.php.net/manual/en/function.xmlwriter-write-dtd-element.php)—编写完整的DTD元素标签 - [XMLWriter :: writeDtdEntity](https://www.php.net/manual/en/function.xmlwriter-write-dtd-entity.php)—编写完整的DTD实体标签 - [XMLWriter :: writeDtd](https://www.php.net/manual/en/function.xmlwriter-write-dtd.php)—写入完整的DTD标记 - [XMLWriter :: writeElementNs](https://www.php.net/manual/en/function.xmlwriter-write-element-ns.php)—编写完整的命名空间元素标签 - [XMLWriter :: writeElement](https://www.php.net/manual/en/function.xmlwriter-write-element.php)—写完整元素标签 - [XMLWriter :: writePi](https://www.php.net/manual/en/function.xmlwriter-write-pi.php)—[编写](https://www.php.net/manual/en/function.xmlwriter-write-pi.php)一个PI - [XMLWriter :: writeRaw](https://www.php.net/manual/en/function.xmlwriter-write-raw.php)—编写原始XML文本 例子: ``` <pre class="calibre17">``` class <span class="token4">XmlConstruct</span> extends <span class="token4">XMLWriter</span> <span class="token3">{</span> <span class="token">/** * Constructor. * @param string $prm_rootElementName A root element's name of a current xml document * @param string $prm_xsltFilePath Path of a XSLT file. * @access public * @param null */</span> public <span class="token5">function</span> <span class="token4">__construct</span><span class="token3">(</span>$prm_rootElementName<span class="token3">,</span> $prm_xsltFilePath<span class="token1">=</span><span class="token2">''</span><span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">openMemory</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">setIndent</span><span class="token3">(</span><span class="token6">true</span><span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">setIndentString</span><span class="token3">(</span><span class="token2">' '</span><span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">startDocument</span><span class="token3">(</span><span class="token2">'1.0'</span><span class="token3">,</span> <span class="token2">'UTF-8'</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">if</span><span class="token3">(</span>$prm_xsltFilePath<span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">writePi</span><span class="token3">(</span><span class="token2">'xml-stylesheet'</span><span class="token3">,</span> <span class="token2">'type="text/xsl" href="'</span><span class="token3">.</span>$prm_xsltFilePath<span class="token3">.</span><span class="token2">'"'</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">startElement</span><span class="token3">(</span>$prm_rootElementName<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * Set an element with a text to a current xml document. * @access public * @param string $prm_elementName An element's name * @param string $prm_ElementText An element's text * @return null */</span> public <span class="token5">function</span> <span class="token4">setElement</span><span class="token3">(</span>$prm_elementName<span class="token3">,</span> $prm_ElementText<span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">startElement</span><span class="token3">(</span>$prm_elementName<span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">text</span><span class="token3">(</span>$prm_ElementText<span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">endElement</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * Construct elements and texts from an array. * The array should contain an attribute's name in index part * and a attribute's text in value part. * @access public * @param array $prm_array Contains attributes and texts * @return null */</span> public <span class="token5">function</span> <span class="token4">fromArray</span><span class="token3">(</span>$prm_array<span class="token3">)</span><span class="token3">{</span> <span class="token5">if</span><span class="token3">(</span><span class="token4">is_array</span><span class="token3">(</span>$prm_array<span class="token3">)</span><span class="token3">)</span><span class="token3">{</span> foreach <span class="token3">(</span>$prm_array as $index <span class="token1">=</span><span class="token1">></span> $element<span class="token3">)</span><span class="token3">{</span> <span class="token5">if</span><span class="token3">(</span><span class="token4">is_array</span><span class="token3">(</span>$element<span class="token3">)</span><span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">startElement</span><span class="token3">(</span>$index<span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">fromArray</span><span class="token3">(</span>$element<span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">endElement</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token5">else</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">setElement</span><span class="token3">(</span>$index<span class="token3">,</span> $element<span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token3">}</span> <span class="token">/** * Return the content of a current xml document. * @access public * @param null * @return string Xml document */</span> public <span class="token5">function</span> <span class="token4">getDocument</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">endElement</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">endDocument</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token5">return</span> $this<span class="token1">-</span><span class="token1">></span><span class="token4">outputMemory</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token">/** * Output the content of a current xml document. * @access public * @param null */</span> public <span class="token5">function</span> <span class="token4">output</span><span class="token3">(</span><span class="token3">)</span><span class="token3">{</span> <span class="token4">header</span><span class="token3">(</span><span class="token2">'Content-type: text/xml'</span><span class="token3">)</span><span class="token3">;</span> echo $this<span class="token1">-</span><span class="token1">></span><span class="token4">getDocument</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> <span class="token3">}</span> <span class="token3">}</span> Example<span class="token3">:</span> $contents <span class="token1">=</span> <span class="token4">array</span><span class="token3">(</span> <span class="token2">'page_title'</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">'Generate a XHTML page from XML+XSLT files'</span><span class="token3">,</span> <span class="token2">'welcome_msg'</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">'Simple XHTML document from XML+XSLT files!'</span><span class="token3">,</span> <span class="token2">'prova'</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span> <span class="token2">"gino"</span> <span class="token1">=</span><span class="token1">></span> <span class="token4">array</span><span class="token3">(</span> <span class="token2">"innergino"</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"gino inner value"</span> <span class="token3">)</span><span class="token3">,</span> <span class="token2">"filo"</span> <span class="token1">=</span><span class="token1">></span> <span class="token2">"filodata"</span> <span class="token3">)</span><span class="token3">,</span> <span class="token3">)</span><span class="token3">;</span> $XmlConstruct <span class="token1">=</span> <span class="token5">new</span> <span class="token4">XmlConstruct</span><span class="token3">(</span><span class="token2">'root'</span><span class="token3">)</span><span class="token3">;</span> $XmlConstruct<span class="token1">-</span><span class="token1">></span><span class="token4">fromArray</span><span class="token3">(</span>$contents<span class="token3">)</span><span class="token3">;</span> $XmlConstruct<span class="token1">-</span><span class="token1">></span><span class="token4">output</span><span class="token3">(</span><span class="token3">)</span><span class="token3">;</span> ``` ```