simplexml_load_file错误工作了几次,然后停止;


simplexml_load_file errors worked a couple of times then stopped;

我在使用simplexml_load_file()加载xml文件时遇到问题,非常感谢您的帮助。代码工作了几次,之后我得到的只是无法打开文件,即使文件存在。谢谢。

<?php
echo 'starting read<br>';
////////////////////////////////////
 //$categories=$_POST["categories"];
 //$project=$_POST["project"];
//$camera=$_POST["camera"];
//$description=$_POST["description"];
//$num=$_POST["val"];
///////////////////////////////////
$categories='a';
$project='a';
$camera='a'; 
$description='a';
$num=2;
//////////////////////////////////
$data=$categories.'<br />'.$project.'<br />'.$camera.'<br />'.$description;
echo $data;
$file = "main.xml";
//checking if file exists
 if(!file_exists($file))
  {echo'<br> file does not exist<br>';
  }
 else 
 echo '<br> file exists <br>';
// load file
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");

// access XML data
$val=$xml->settings->imagesPage->imagesGallery->pageTitle[$num];
echo $val;
$xml->settings->imagesPage->imagesGallery->pageTitle[$num]=$data;
file_put_contents($file, $xml->asXML());
  echo  '<br>'. $desc.''n';
?>

这是xml文件结构

<?xml version="1.0" encoding="iso-8859-1"?>
    <content>
       <settings>
          <imagespage>
             <imagesGallery>
                <pageTitle><![CDATA[<br>SED UT PERSPI<br>CANON 124<br>LOREM IPSUM<br>DOLOR SIT AMET]]></pageTitle>
                 <pageTitle><![CDATA[<br>SED UT PERSPI<br>CANON 124<br>LOREM IPSUM<br>DOLOR SIT AMET]]></pageTitle>
                  <pageTitle><![CDATA[<br>SED UT PERSPI<br>CANON 124<br>LOREM IPSUM<br>DOLOR SIT AMET]]></pageTitle>
                   <pageTitle><![CDATA[<br>SED UT PERSPI<br>CANON 124<br>LOREM IPSUM<br>DOLOR SIT AMET]]></pageTitle>
                    <pageTitle><![CDATA[<br>SED UT PERSPI<br>CANON 124<br>LOREM IPSUM<br>DOLOR SIT AMET]]></pageTitle>
              </imagesGallery>
             </imagespage>
         </settings>
     </content>

我还确保allow_url_fopen设置为ON

第34行有一个小的打字错误

$xml->settings->imagesPage->imagesGallery->pageTitle[$num]=$data;

应该是

$xml->settings->imagespage->imagesGallery->pageTitle[$num]=$data;

除此之外,CCD_ 1的末尾还有一个未定义的错误。它没有设置!

@tlenss谢谢你,我更正了$desc,应该是$data,你发现的另一个错误是我在网页上的拼写错误

我的问题是,我的xml文件前几次正确加载了一个,但后来出现错误,说它无法加载。在仔细检查var_dump($xml)时,我发现问题是simpleXML无法正确处理cdata

所以我像这个一样加载了我的文件

$xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 

如果您的文档没有cdata部分

,则可以像这样加载$xml = simplexml_load_file($file)