php - 在从 MySQL 导出的 XML 中使用标签

标签 php mysql xml

我遇到以下问题。

我想将数据从 mysql 数据库转换为 XML。实际上我用命令来做到这一点:

mysql --xml -i -u username -p tablename 'select * from performancedata LIMIT 10'> query.xml;

输出如下所示:

<resultset statement="select * from performancedata LIMIT 10
" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <field name="time">2017-05-20 18:04:14</field>
    <field name="verbrauch">329</field>
    <field name="leistung">759</field>
    <field name="einspeisung">430</field>
    <field name="avgEinspeisung">0</field>
</row>

...

为了能够解析此 XML,我必须将标签转换为列名称,例如时间=.我怎样才能做到最好?

我需要以下格式:

<row>
    <time>2017-05-20 18:04:14</time>
    <verbrauch>329</verbrauch>
    <leistung>759</leistung>
    <einspeisung>430</einspeisung>
    <avgEinspeisung>0</avgEinspeisung>
</row>

最佳答案

您究竟是如何从 MySQL 中获取这些数据的?您是否确实从 PHP 中运行命令行命令来获取输出的 XML?或者您的命令行示例是否显示您如何从命令行执行此操作,而现在您想了解如何从 PHP 中执行此操作?

无论哪种方式,我认为最好的选择是自己进行转换,并简单地使用 MySQL 作为其应有的数据存储,而不是依赖 MySQL 来为您管理到 XML 的转换。您可以使用 simplexmlelement管理到 XML 的转换,但对于像这样的简单示例,从概念上讲,您自己构建 xml 会更容易。如果您使用 PDO 之类的东西作为数据库连接,它将如下所示:

$qres = $pdo->query( "select * from performancedata LIMIT 10" );
$xml = '<row>';
foreach ( $qres->fetch( PDO::FETCH_ASSOC ) as $row )
{
    foreach ( $row as $name => $value )
        $xml .= "    <$name>$value</$name>";
}
$xml .= '</row>';

print $xml;

关于php - 在从 MySQL 导出的 XML 中使用标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44167645/

相关文章:

php - 使用带有 key 的 REST_Controller Codeigniter API

mysql - 包含 "The "的字符串的文本操作

java - 通过指定其属性来打印 XML 元素

node.js - 如何用node jsexpress响应xml?

mysql - 当变量可以取负值时,进行与无符号数之间的运算

c# - 反序列化为 List 仅选取一项

php - 仅替换文件形式 preg_replace 中的特定组

php - 在INSERT INTO MySQL查询中插入PHP变量

php - 使用 codeigniter 裁剪图像

MySQL - 只计算连接中的一个不同值