我要处理一种用户提交的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;
}

解决方案 »

  1.   

    file_get_contents 读入为空?我比较有兴趣的是你的这个xml文件,传一个?
      

  2.   

    <Music
    Index="131"
    Name="说你爱我"
    Image="rnr_image/img_music/music_1162.bmp"
    File="rnr_script/music_add/e_song1162.xml"
    Level="5"
    Genre="R&&B"
    Artist="潘玮柏"
    Coin="0"
    BPM="122"
    Combo="330"
    Stat="28"
    ></Music><Music
    Index="132"
    Name="Lydia"
    Image="rnr_image/img_music/music_1145.bmp"
    File="rnr_script/music_add/Lydia.xml"
    Level="5"
    Genre="Rock"
    Artist="F.I.R"
    Coin="0"
    BPM="162"
    Combo="308"
    Stat="28"
    ></Music>
    ===============
    把以上内容复制存为一个xml吧
    其它内容也是这样的Music标签分支,总之没有根
      

  3.   

    我试了一下 函数在判断上有问题if(strpos($xmlStr,'<Music>')) 修改成 if(strpos($xmlStr,'<Music')!==false) 另外 但是到了 simplexml_load_string 这里 读取xml会有问题,我对xml了解不多需要你自己分析一下哪里不符合要求老。
      

  4.   

    噢,搜索字符那里是错了,修正了
    载入错误的原因好像是因为有中文.这个不重要了
    现在我改为用DOMDocument对象来处理XML有新的问题出现了
    请见
    http://topic.csdn.net/u/20120129/19/783ea97b-b1af-4c94-a8a8-dcc54e4c70dd.html?28312