Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php文档格式奇怪_Php_Xml_Domdocument - Fatal编程技术网

php文档格式奇怪

php文档格式奇怪,php,xml,domdocument,Php,Xml,Domdocument,在修改domdocument结构时,尝试格式化xml输出时,我遇到了奇怪的行为 我基于DomDocument创建了简单的Item类: class Item extends DOMDocument { private $root; function __construct($version = null, $encoding = null) { parent::__construct($version, $encoding); $this->formatOutput =

在修改domdocument结构时,尝试格式化xml输出时,我遇到了奇怪的行为

我基于DomDocument创建了简单的Item类:

class Item extends DOMDocument {

private $root;

function __construct($version = null, $encoding = null) {
    parent::__construct($version, $encoding);
    $this->formatOutput = true;
    $this->root = $this->createElement("root");
    $this->root = $this->appendChild($this->root);
}

function build($name) {
    $item = $this->createElement("item");
    $name = $this->createTextNode($name);
    $item->appendChild($name);
    $this->getElementsByTagName("root")->item(0)->appendChild($item);
}
}
现在,我这里有一个小用例:

$it = new Item('1.0', 'iso-8859-1');
$it->build("first");
$it->build("seccond");
$xml = $it->saveXML();

echo $xml;

$it2 = new Item('1.0', 'iso-8859-1');
$it2->loadXML($xml);

$it2->build("third");
$it2->build("fourth");
$it2->build("fifth");
$it2->formatOutput = true;

$xml2 = $it2->saveXML();

echo $xml2;
现在是奇怪的一点。我调用了脚本,它根据需要生成了两个xml文件,但是我注意到在编辑文档后,格式化不知怎么丢失了。它可以在没有任何缩进的情况下进行

<?xml version="1.0" encoding="iso-8859-1"?>
<root>
  <item>first</item>
  <item>seccond</item>
</root>
<?xml version="1.0" encoding="iso-8859-1"?>
<root>
  <item>first</item>
  <item>seccond</item>

<item>third</item><item>fourth</item><item>fifth</item></root>

第一
秒
第一
秒
第三十五
我想这是我错过的东西。也许这是我在打开文档后向root添加节点的方式,也许是一些神奇的设置

代码起作用,但我想知道这种奇怪行为的原因是什么。

您可以“告诉”libxml前导/尾随空格不重要(因此,在这种情况下libxml可能会插入空格以缩进元素),例如将属性设置为false

$this->formatOutput = true;
$this->preserveWhiteSpace  = false;
$this->root = $this->createElement("root");

我知道事情会很简单:)谢谢你,这很有道理,而且工作正常。