总有人间一两风,填我十万八千梦

PHP XMLWriterstartDocument 用法 手册 | 示例代码

PHP开发手册 归档 540℃ 0评论

XMLWriter::startDocument

xmlwriter_start_document

(PHP 5 >= 5.1.2, PHP 7, PECL xmlwriter >= 0.1.0)

XMLWriter::startDocumentxmlwriter_start_documentCreate document tag

说明

面向对象风格

XMLWriter::startDocument ([ string $version = 1.0 [, string $encoding = NULL [, string $standalone ]]] ) : bool

过程化风格

xmlwriter_start_document ( resource $xmlwriter [, string $version = 1.0 [, string $encoding = NULL [, string $standalone ]]] ) : bool

Starts a document.

参数

xmlwriter

仅用于过程调用。被修改的 XMLWriter resource。此资源来自于对 xmlwriter_open_uri()xmlwriter_open_memory() 的调用。

version

The version number of the document as part of the XML declaration.

encoding

The encoding of the document as part of the XML declaration.

standalone

yes or no.

返回值

成功时返回 TRUE, 或者在失败时返回 FALSE

参见

用户贡献的笔记

msbmail at gmail dot com

Some errors in generating the XML document are related to the format used to write the PHP file from which the XML is generated.

In Windows environments, be sure to save your documents in ANSI / ASCII and you will avoid many of them.

icepick dot pt at hotmail dot com

I was having a very hard time triyng to use:

$writer->startDocument( '1.0' , 'Windows-1252' );

Somehow this caused the generation of an empty xml file, and I could not figure out why.
When all other efforts failed I asked for help to the team that developed the XMLwriter extension, and got a very quick reply as follows:

Quote:
==============================
Windows-1252 support is only available if libxml2 is link with iconv
support (it usually is, but there are exceptions). I know on my Mac, the
built in libxml2 doesnt provide iconv support - they go with some
Unicode hack which doesnt provide it, so I had to build my own. It is
built by default (and your code works) on my linux machines.

It is possible to create the XML without a declaration, which means you
could add it manually, but if you use any characters that are differnt
between UTF-8 and Windows-1252, the encoding would be wrong in the
document, so do not recommend.
==============================

Then light was made on my head: I am using a linux server distribution that by default is still running PHP 4.3. A few months ago I decided to force the upgrade of PHP to the newest version 5.1.6 at that time, and that has brougth me the XMLwriter extension that I am now using. But clearly there are compatibility issues betwen the rest of the server's defaults and PHP 5 wich is probably why it's development team has not upgraded yet.

Let's hope all the remaining environments catch up with this extension. It is in fact most handy.

And in the meantime, I have figured out a (not recomended, obviously) workaroud that works for me:

Instead of using two parameters, I used only the first one:

$writer->startDocument( '1.0" encoding="Windows-1252' );

this will output:

<?xml version="1.0" encoding="Windows-1252"?>

转载请注明:悠然品鉴 » PHP XMLWriterstartDocument 用法 手册 | 示例代码

喜欢 (0)or分享 (0)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址