我有一个查询,它将我的行作为已经生成的XML返回。如果重要,那就是Oracle。当我本地运行查询时,XMLELEMENT函数。
例如,来自Oracle文档:
SELECT XMLELEMENT("Emp",
XMLATTRIBUTES(e.employee_id AS "ID", e.last_name),
XMLELEMENT("Dept", e.department_id),
XMLELEMENT("Salary", e.salary)) AS "Emp Element"
FROM employees e
WHERE e.employee_id = 206;
Emp Element
---------------------------------------------------------------
<Emp ID="206" LAST_NAME="Gietz">
<Dept>110</Dept>
<Salary>8300</Salary>
</Emp>
如何让PHP返回XML文件,因此我不必执行任何'<' . $row['lastname'] . '>'
;`类型语句。我不需要这样的东西,因为它都是在我的查询中处理的。
每当我使用print_r()
时,它会剥离我的所有节点,并且只给出节点中的值。与foreach
中的键值相同。
<Emp ID="206" LAST_NAME="Gietz">
<Dept>110</Dept>
<Salary>8300</Salary>
</Emp>
最终剥离了所有xml标签,
110
8300
我的代码是:
$dbh = new PDO('oci:dbname=tnsname,'username','password');
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $dbh->prepare($sql);
$stmt->execute();
$result = $stmt->fetch();
array_shift($result);
//Create a new DOM document and load XML into its internal XML tree
$xml = new SimpleXMLElement($result[0]);
echo $xml->asXML();
print_r($result);
编辑:结束了这一点,谢谢你。
header('Content-Type: application/xml; charset=utf-8');
echo '<employee>';
foreach ($result as $key=>$value)
{
echo $result->$key;
}
echo '</employee>';
答案 0 :(得分:1)
请勿使用print_r()
输出简单字符串,使用echo
或print()
。
浏览器不会剥离您的节点,它只是将其呈现为HTML。它忽略未知元素并输出文本节点。检查浏览器中的源视图。
要使浏览器识别XML,请发送内容类型。
header('Content-Type: application/xml; charset=utf-8');
echo $result[0];