【问题标题】:Use Tags in exported XML from MySQL在从 MySQL 导出的 XML 中使用标签
【发布时间】:2017-05-24 20:12:28
【问题描述】:

我有以下问题。

我想将数据从 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>

【问题讨论】:

  • 使用 PHP:我想你可以尝试使用 SimpleXML - 将查询结果加载到一个 SimpleXML 对象中,然后遍历 row 的子级并编写新的 xml,同时将每个 field 子级命名为属性规定。

标签: php mysql xml


【解决方案1】:

您究竟是如何从 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;

【讨论】:

    猜你喜欢
    • 2013-04-04
    • 2013-01-05
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 2018-06-04
    • 2011-08-02
    • 2021-05-06
    • 1970-01-01
    相关资源
    最近更新 更多