在 PHP 中创建/编写 XML 文件?
Posted
技术标签:
【中文标题】在 PHP 中创建/编写 XML 文件?【英文标题】:Creating/Writing an XML file in PHP? 【发布时间】:2012-03-24 16:38:08 【问题描述】:我目前有一个用 php 编写的脚本,我在其中连接到 phpMyAdmin
中的数据库,然后将所有表值解析为 XML 文档。
下面是脚本的工作原理:
$xmlBody .= "<XML>";
$sql_news = mysql_query("SELECT * FROM news_table");
$xmlBody .= "<News_Table>";
//this while loop churns out the values of our "news_table" table
while($row_news = mysql_fetch_array($sql_news))
// Set DB variables into local variables for easier use
$id_news = $row_news["news_id"];
$author_news = $row_news["news_author"];
$time_news = $row_news["news_time"];
$title_news = $row_news["news_title"];
$content_news = $row_news["news_content"];
$desc_news = $row_news["news_description"];
$image_news = $row_news["news_image"];
$xmlBody .= '
<News_Table_Entry>
<DataID>' . $id_news . '</DataID>
<DataAuthor>' . $author_news . '</DataAuthor>
<DataTime>' . $time_news . '</DataTime>
<DataTitle>' . $title_news . '</DataTitle>
<DataContent>' . $content_news . '</DataContent>
<DataDesc>' . $desc_news . '</DataDesc>
<DataImage>' . $image_news . '</DataImage>
</News_Table_Entry>';
// End while loop
$xmlBody .= "</News_Table>";
mysql_close(); // close the mysql database connection
$xmlBody .= "</XML>";
echo $xmlBody;
?>
如何创建并将其输出为外部XML file
?我已经成功地让这个脚本工作了,但是使用所有写出 XML 的方法都不起作用。使用
echo 'Wrote: ' . $doc->save("/tmp/test.xml") . ' bytes'; // Wrote: 72 bytes
函数不起作用,fwrite 函数也不起作用。几天来,我一直在努力解决这个问题,但我被告知要尝试的解决方案都没有奏效。任何帮助或见解将不胜感激!
【问题讨论】:
为了可扩展性和维护,您应该研究序列化。查看pear.php.net/package/XML_Serializer/redirected$doc
?您没有使用DOMDocument
或SimpleXML
,对吗?因此,save
方法没有被定义。
只是将文本写入文件怎么样?
【参考方案1】:
根据您的代码,您已经在自己构建 XML 内容。 XML 文件只是普通的文本文件,因此在这种情况下,您不需要任何用于验证和呈现的特殊 XML 函数。相反,您可以简单地将文本保存到 .xml 文件中:
file_put_contents('/tmp/test.xml', $xmlBody);
file_put_contents
允许您放弃所有 fopen/fwrite 功能,因此这是将内容写入磁盘的最简单方法。
另一方面,如果您确实想学习构建具有所有花里胡哨的一致性的结构化 XML 文档,请查找 SimpleXML
或 XMLWriter
。这样会增加一点开销,但手动进行所有标记可能会很笨拙,尤其是当一个拼写错误会使整个文档无效时。
【讨论】:
【参考方案2】:这对你有帮助
$xml_msg_in = fopen('/tmp/test.xml',"w");
fwrite($xml_msg_in,$xmlBody);
fclose($xml_msg_in);
【讨论】:
【参考方案3】:你试过file_put_contents('/path/to/output.xml', $xmlBody);
【讨论】:
【参考方案4】:只是为了理解,您的echo $xmlBody;
行至少可以按预期工作吗?
如果您尝试在某处使用 XML 文件但没有成功,请注意您缺少作为 XML 文件第一行的 XML 标头。
<?xml version="1.0"?>
请注意,根据您数据库中的数据,此标头可能需要指定更广泛的编码,例如 UTF-16。但是您应该选择您希望在该数据库中允许的字符集。
<?xml version="1.0" encoding="UTF-16"?>
代码示例末尾的?>
是什么?
【讨论】:
以上是关于在 PHP 中创建/编写 XML 文件?的主要内容,如果未能解决你的问题,请参考以下文章