我要处理一种用户提交的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;
}
<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;
}
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标签分支,总之没有根
载入错误的原因好像是因为有中文.这个不重要了
现在我改为用DOMDocument对象来处理XML有新的问题出现了
请见
http://topic.csdn.net/u/20120129/19/783ea97b-b1af-4c94-a8a8-dcc54e4c70dd.html?28312