ошибки simplexml_load_file сработали пару раз, затем прекратились; - PullRequest
0 голосов
/ 12 февраля 2012

У меня проблема с загрузкой моего xml-файла с помощью simplexml_load_file (), буду очень признателен за помощь.Код работал пару раз, и после этого все, что я получил, не смог открыть файл, даже если файл существует. Спасибо.

<?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>

Iтакже убедитесь, что для allow_url_fopen установлено значение ON

Ответы [ 2 ]

0 голосов
/ 13 февраля 2012

@ tlenss спасибо, что я исправил $desc он должен был быть $data, другая найденная ошибка - опечатка, которую я сделал на веб-странице

Моя проблема заключалась в том, что мой xml-файл загружался правильно первые несколько раз, но затем выдает ошибки, говорящие о невозможности загрузки. При ближайшем рассмотрении var_dump($xml) я обнаружил, что проблема в том, что simpleXML не может правильно обрабатывать cdata

так я загрузил свой файл вот так

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

загрузка такая: $xml = simplexml_load_file($file) нормально, если в вашем документе нет секции cdata

0 голосов
/ 12 февраля 2012

Есть небольшая опечатка на линии 34

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

Должно быть

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

И, кроме того, неопределенная ошибка в конце для $desc. Это не установлено!

...