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

时间:2012-02-12 05:49:51

标签: php xml simplexml

我在使用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

2 个答案:

答案 0 :(得分:0)

第34行有一个小错字

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

应该是

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

除了$desc的最后一个未定义的错误。它没有设置!

答案 1 :(得分:0)

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

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

所以我加载了我的文件

$xml = simpleXML_load_file($url,"SimpleXMLElement",LIBXML_NOCDATA); 
如果您的文档没有cdata部分

像这样$xml = simplexml_load_file($file)加载就可以了