我的问题是php simpleXML,我有一个函数可以将我的数组转换为xml,但有时会忘记放置每个“<”所以xml无效。以前有人见过这样的东西吗?
private function array_to_xml($baseInfo, &$xmlBaseInfo) {
foreach($baseInfo as $key => $value) {
if(is_array($value)) {
if(!is_numeric($key)){
$subnode = $xmlBaseInfo->addChild("$key");
$this->array_to_xml($value, $subnode);
}
else{
$subnode = $xmlBaseInfo;
$this->array_to_xml($value, $subnode);
}
}
else {
$value = utf8_encode($value);
$value = str_replace("&", "&", $value);
$xmlBaseInfo->addChild("$key", $value);
}
}
}
这就是我在课堂上称呼它的方式:
$xmlBaseInfo = new SimpleXMLElement('<'.'?xml version="1.0" encoding="iso-8859-2" ?'.'>'."\n" ."<data></data>");
$this->array_to_xml($this->data,$xmlBaseInfo);
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($xmlBaseInfo->asXML());
echo $dom->saveXML();
我怎么说有时它会像这样输出xml:
<?xml version="1.0" encoding="iso-8859-2"?>
<data>
<jatek_id>1</jatek_id>
<cim>The Big Bang Theory</cim>
<alcim>alcím</alcim>
<leiras>Lorem Ipsum....</leiras>
<fotonev></fotonev>
<status>0</status>
<megjelenik>Nov 11 2011 11:11:11:000AM</megjelenik>
<winnertext/>
<szabaly/>
<lap_id>9</lap_id>
<questions>
<question>
<jatekkerdes_id>1</jatekkerdes_id>
<jatek_id>1</jatek_id>
<kerdes>Tyúk vagy tojás</kerdes>
<sorrend>10</sorrend>
<megoldas>1</megoldas>
<fotonev/>
<answers>
<answer>
<jatekvalasz_id>1</jatekvalasz_id>
<kerdes_id>1</kerdes_id>
<valasz>Tyúk</valasz>
<sorrend>10</sorrend>
<fotonev/>
</answer>
<answer>
<jatekvalasz_id>2</jatekvalasz_id>
<kerdes_id>1</kerdes_id>
<valasz>Tojás</valasz>
<sorrend>20</sorrend>
<fotonev/>
</answer>
</answers>
</question>
<question>
<jatekkerdes_id>2</jatekkerdes_id>
<jatek_id>1</jatek_id>
<kerdes>Almafa vagy borecet?</kerdes>
<sorrend>20</sorrend>
<megoldas>3</megoldas>
<fotonev/>
<answers>
<answer>
<jatekvalasz_id>3</jatekvalasz_id>
<kerdes_id>2</kerdes_id>
valasz>Almafa</valasz> //Here is the problem! missing <
<sorrend>30</sorrend>
<fotonev/>
</answer>
<answer>
<jatekvalasz_id>4</jatekvalasz_id>
<kerdes_id>2</kerdes_id>
<valasz>Borecet</valasz>
<sorrend>40</sorrend>
<fotonev/>
</answer>
</answers>
</question>
</questions>
</data>
帮助
这个数组发生了:
Array
(
[jatek_id] => 1
[cim] => The Big Bang Theory
[alcim] => alcím
[leiras] => Lorem Ipsum...
[fotonev] =>
[status] => 0
[megjelenik] => Nov 11 2011 11:11:11:000AM
[winnertext] =>
[szabaly] =>
[lap_id] => 9
[questions] => Array
(
[0] => Array
(
[question] => Array
(
[jatekkerdes_id] => 1
[jatek_id] => 1
[kerdes] => Tyúk vagy tojás
[sorrend] => 10
[megoldas] => 1
[fotonev] =>
[answers] => Array
(
[0] => Array
(
[answer] => Array
(
[jatekvalasz_id] => 1
[kerdes_id] => 1
[valasz] => Tyúk
[sorrend] => 10
[fotonev] =>
)
)
[1] => Array
(
[answer] => Array
(
[jatekvalasz_id] => 2
[kerdes_id] => 1
[valasz] => Tojás
[sorrend] => 20
[fotonev] =>
)
)
)
)
)
[1] => Array
(
[question] => Array
(
[jatekkerdes_id] => 2
[jatek_id] => 1
[kerdes] => Almafa vagy borecet?
[sorrend] => 20
[megoldas] => 3
[fotonev] =>
[answers] => Array
(
[0] => Array
(
[answer] => Array
(
[jatekvalasz_id] => 3
[kerdes_id] => 2
[valasz] => Almafa
[sorrend] => 30
[fotonev] =>
)
)
[1] => Array
(
[answer] => Array
(
[jatekvalasz_id] => 4
[kerdes_id] => 2
[valasz] => Borecet
[sorrend] => 40
[fotonev] =>
)
)
)
)
)
)
)
答案 0 :(得分:0)
问题'解决了'......
看起来我们的公司服务器有问题。在不同的计算机上尝试,输出无bug。
非常感谢你的帮助:)