从数据库查询XML并访问DOM

时间:2018-04-04 11:27:34

标签: php xml

用户创建XML文件并将其作为BLOB存储在数据库中。每个XML文件都有自己的行。

我的脚本应该查询数据库并检索每一行的XML文件。

每个XML文件都应该在一个自己的php对象中并存储在一个数组中。之后,我需要访问每个XML的DOM,以便在html模板中显示数据。

这是我到目前为止所得到的:

$stmt = $pdo->query('SELECT xml FROM table');

foreach ($stmt as $row)
{
    echo $row['xml'] . "\n";
}

它将输出没有xml-tags的信息。我想知道为什么。问题是,我不知何故需要访问DOM。

我读到了

  

使用simplexml_load_file

但它需要一个文件路径,我没有这个文件路径,因为文件存储为数据库中的BLOB。

谢谢!

1 个答案:

答案 0 :(得分:2)

您可以使用simplexml_load_string代替......

$stmt = $pdo->query('SELECT xml FROM table');

foreach ($stmt as $row)
{
    $data = simplexml_load_string($row['xml']);
    echo "<pre>".$data->asXML()."</pre>";
}

您可能看不到标记的原因是您将它们回显到HTML页面,该页面试图将它们解释为HTML标记。

不确定如何按照foreach进行操作,因为它通常会被写为

while ($row = $stmt->fetch(\PDO::FETCH_ASSOC))  // Add correct retrieval method your after
{
    $data = simplexml_load_string($row['xml']);
    echo "<pre>".$data->asXML()."</pre>";
}

这取决于API以及您是否使用自己的类方法。