if (isset($_POST['xmldata'])) {
$string="<configuration>".$_POST['xmldata']."</configuration>";
$doc=$xml = new DOMDocument();
$xml->loadXML($string);
...
为什么我表单提交过来的XML文件,页面报错呢?
页面提示信息:
Warning: DOMDocument::loadXML() [domdocument.loadxml]: AttValue: " or ' expected in Entity, line: 2 in /usr/local/apache2/htdocs/dbmanage/xmlfile.php on line 126Warning: DOMDocument::loadXML() [domdocument.loadxml]: attributes construct error in Entity, line: 2 in /usr/local/apache2/htdocs/dbmanage/xmlfile.php on line 126Warning: DOMDocument::loadXML() [domdocument.loadxml]: Couldn't find end of Start Tag add line 2 in Entity, line: 2 in /usr/local/apache2/htdocs/dbmanage/xmlfile.php on line 126Warning: DOMDocument::loadXML() [domdocument.loadxml]: AttValue: " or ' expected in Entity, line: 3 in /usr/local/apache2/htdocs/dbmanage/xmlfile.php on line 126Warning: DOMDocument::loadXML() [domdocument.loadxml]: attributes construct error in Entity, line: 3 in /usr/local/apache2/htdocs/dbmanage/xmlfile.php on line 126xml格式如下:
  <appSettings>
    <add key="cegg" value="true" />
    <add key="dveda" value="true" />
    <add key="acdfe" value="192.168.1.15:10201" />
    <add key="adsf" value="http://xxxx.net/uidimg_default" />
    <add key="cve" value="http://192.168.1.13/packager2" />
    <add key="feed_ee" value="http://xxxx.com/"/>
  </appSettings>PHP版本:
#php -v
PHP 5.2.12 (cli) (built: Apr 25 2012 21:12:31) 

解决方案 »

  1.   

    你的XML语法本就是错误的
    引用自wikipedia:
    每个XML文档都由XML序言开始,在前面的代码中的第一行便是XML序言,<?xml version="1.0"?>。这一行代码会告诉解析器或浏览器这个文件应该按照XML规则进行解析。
    之后就是XML的根元素[1]。 在上面的小纸条例子中,此元素就是<小纸条>,而</小纸条>是根元素的结尾标记(即结束标签)。任何XML文档都只能有一个根元素。根元素里面,可以有子元素,子元素里面可以有子子元素,以此类推。

      

  2.   

    我这里是把他当成一段string加载进loadXML()里的,即使我加了序言(<?xml version="1.0"?>),也还是一样的报错。
      

  3.   

    var_dump($string); // 加上这句,贴出结果来。
    $xml->loadXML($string);
      

  4.   

    var_dump结果,string(512) " ",应该是表单提交后把有特殊字符的$string给解析不出来! 
      

  5.   

    表单POST上来的?enctype是什么? 还是AJAX提上来的? Content-Type设置了什么? 看看HTTP_RAW_POST_DATA?