<?php
$xml_str = <<<eof
<?xml version='1.0'?>
<books>
<book>
<title>Harry Potter</title>
<publisher>Warner Bros.</publisher>
<price>39.0</price>
</book>
</books>
eof;
$dom = new DOMDocument;
$dom->loadXML($xml_str);
echo $dom->saveXML();
$dom->save("0000.xml");
?>这个是php生成xml页面 生成xml名称为0000.xml
现在问题来了 如果上面的随便一个节点为空 加入<price>39.0</price>改为<price></price>
生成的xml文件就有问题了,我们这下来看看生成的0000.xml内容,随便找个编辑器打开浏览结果:<?xml version="1.0"?>
<books>
<book>
<title>Harry Potter</title>
<publisher>Warner Bros.</publisher>
<price/>
</book>
</books>
求大牛帮看看怎么回事,因为小弟我要生成的xml文件中节点内容不明确,有些节点值将留空,是不是php就不能生成带有空值节点的内容,
我想让某些节点为空,希望生成的xml文件能成为如下这样:<?xml version="1.0"?>
<books>
<book>
<title>Harry Potter</title>
<publisher>Warner Bros.</publisher>
<price></price>
</book>
</books>
先感激帮我忙的大牛了,祝天天开心!

解决方案 »

  1.   

    首先, xml里 <price></price> 应该写成<price/>其次, 试下saveHTML()
      

  2.   

    这样更执行不了 报了一堆的错
    Premature end of data in tag price line 1 in Entity, line: 1 in 那个是php页面
      

  3.   

    $dom->save("0000.xml",LIBXML_NOEMPTYTAG );  //最后一句改成这样。
      

  4.   

    生成xml最好加上 <![CDATA[  ]]>,比如: <title><![CDATA[Harry Potter]]></title>
    还需注意符号 <,>,&,\," 需转义成 &lt; &gt; &amp; &apos; &quot; 同时需注意 &nbsp; 要转义成空格。要不同样会报错。
      

  5.   

    这是什么问题呀?!
    在 XML 中,空节点
    可以写作形如
    <price></price> 
    也可以写作形如
    <price/>