【发布时间】:2015-12-02 23:42:03
【问题描述】:
我有这个文本文件(namelist.txt):
{"0":"Mr Tony Test","1":"Ms Tina Testy"}
我尝试将其转换为 XML:
<?php
$xml = new DOMDocument();
$names = json_decode(file_get_contents('namelist.txt'));
foreach ($names as $name)
{
$xml_name = $xml->createElement($name);
}
$xml->save("rss.xml");
?>
我收到以下错误:
致命错误:未捕获的异常“DOMException”和消息“无效” C:\xampp\htdocs\xibo\rss.php:6 中的字符错误' 堆栈跟踪:#0 C:\xampp\htdocs\xibo\rss.php(6): DOMDocument->createElement('托尼先生 Te...') #1 {main} 在第 6 行的 C:\xampp\htdocs\xibo\rss.php 中抛出
这样的可能吗?
编辑 1:
尝试了@spiky 的解决方案,但结果却是空白页:
<?php
$obj=('namelist.txt');
function json_to_xml($obj){
$str = "";
if(is_null($obj))
return "<null/>";
elseif(is_array($obj)) {
//a list is a hash with 'simple' incremental keys
$is_list = array_keys($obj) == array_keys(array_values($obj));
if(!$is_list) {
$str.= "<hash>";
foreach($obj as $k=>$v)
$str.="<item key=\"$k\">".json_to_xml($v)."</item>".CRLF;
$str .= "</hash>";
} else {
$str.= "<list>";
foreach($obj as $v)
$str.="<item>".json_to_xml($v)."</item>".CRLF;
$str .= "</list>";
}
return $str;
} elseif(is_string($obj)) {
return htmlspecialchars($obj) != $obj ? "<![CDATA[$obj]]>" : $obj;
} elseif(is_scalar($obj))
return $obj;
else
throw new Exception("Unsupported type $obj");
}
?>
【问题讨论】:
-
显然我无法在我的环境中安装 XML_Serializer。我尝试了@spiky 的答案,但我得到了一个空白页。