我在使用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
答案 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)
加载就可以了