日期:2014-05-17  浏览次数:20407 次

在缺少根的XML文件基础上得到这个内容的XML对象
我要处理一种用户提交的XML,是缺少根的,即原本XML标准结构为
<Root>
  <node1>
  </node1>

  <node2>
  </node2>
.........
.........
</Root>

但我的用户们提交XML文件是没有根的
  <node1>
  </node1>

  <node2>
  </node2>

于是用simplexml_load_file函数来创建XML对象即不可能,因为解释器会报错
我就想载入XML文件字符串到变量$str,然后再前后添加一个根字符串<root> 之类,形成一个标准XML字符串内容后再用
simplexml_load_string函数来创建XML对象
=================
我所遇到的难题系,首先打算将xml 的文件流载入到$str变量时就已经失败,PHP的文件读取函数好像做了点手脚,将载入的内容都变成空了.fread,file_get_contents函数都不行,请问哪位有高招?

(注:请不要考虑手动在XML上添加一个根,因为这种XML其实是某个游戏的脚本,个游戏专门弄成咁样的..我必须以兼容这个游戏数据的态度来做读取程序)
以下是代码



function GetXMLDOM($filename)
{

$xmlStr=file_get_contents($filename);

if(strpos($xmlStr,'<Music>'))
//初步验证XML内容是否为该游戏的脚本
{
$xmlStr='<Root>'.$xmlStr.'</Root>';
return simplexml_load_string($xmlStr);
}
else return false;
}


------解决方案--------------------
我试了一下 函数在判断上有问题

if(strpos($xmlStr,'<Music>')) 

修改成 

if(strpos($xmlStr,'<Music')!==false) 

另外 但是到了 simplexml_load_string 这里 读取xml会有问题,我对xml了解不多需要你自己分析一下哪里不符合要求老。