Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP导出为XML_Php_Sql_Xml_Export_Export To Xml - Fatal编程技术网

用PHP导出为XML

用PHP导出为XML,php,sql,xml,export,export-to-xml,Php,Sql,Xml,Export,Export To Xml,尝试将以下PHP导出为XML,以便为YealLink SIP-T46G创建远程电话簿。到目前为止,已成功导出一个XML格式,但该格式无法在手机上使用。浏览整个网站,我发现了类似的问题,但并没有设法让这个工作 preserveWhiteSpace=false; $dom->formatOutput=true; $dom->loadXML($sxe->asXML()); echo$dom->saveXML(); $dom->save('phonebookt47.xml'); ?>您需要将属性放入内

尝试将以下PHP导出为XML,以便为YealLink SIP-T46G创建远程电话簿。到目前为止,已成功导出一个XML格式,但该格式无法在手机上使用。浏览整个网站,我发现了类似的问题,但并没有设法让这个工作

preserveWhiteSpace=false;
$dom->formatOutput=true;
$dom->loadXML($sxe->asXML());
echo$dom->saveXML();
$dom->save('phonebookt47.xml');

?>
您需要将属性放入
内容
标记中,如下所示:

<?php
include './data/datalogin.php';
$sql = mysqli_query($con,"SELECT contact_id, name, phone, cell FROM contact ORDER BY name ASC");

$xml = "<root_contact>";

while($r = mysqli_fetch_array($sql))
{
   $xml .= '<contact display_name="'.$r["name"].'" office_number="'.$r["phone"].'" mobile_number="'.$r["cell"].'" />';
}

$xml .= "</root_contact>";

$sxe = new SimpleXMLElement($xml);
$dom = new DOMDocument('1,0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($sxe->asXML());

echo $dom->saveXML();

$dom->save('phonebookt47.xml');
?>
preserveWhiteSpace=false;
$dom->formatOutput=true;
$dom->loadXML($sxe->asXML());
echo$dom->saveXML();
$dom->save('phonebookt47.xml');
?>

您可以将
simplexmlement
addChild()
addAttribute()
一起使用:

addChild('contact');
$contact->addAttribute('display_name',$r[“name]”);
$contact->addAttribute('office_number',$r[“phone”]);
$contact->addAttribute('mobile_number',$r[“cell”]);
}
$dom=新的DOMDocument('1.0');
$dom->preserveWhiteSpace=false;
$dom->formatOutput=true;
$dom->loadXML($xml->asXML());
标题('Content-Type:text/xml');
echo$dom->saveXML();
//$dom->save('phonebookt47.xml');

由于您将XML作为串联字符串编写,因此只需确保包含其中的所有静态文本。它应该是这样的:

  $xml .= '<contact display_name="' . $r["name"] . '"office_number="' . $r["cell"] . '" mobile_number="' . $r["cell"] . '"/>';
}
$xml.='';
}
编辑:只需将字符串作为文本转储到文件中。这样就不需要设备来支持SimpleXMLElement函数

性能说明:我特意将其压缩为一行,因为每次使用$xml.=,它都会重新加载整个xml字符串以附加下一个参数。如果使用大型XML,这会大大降低速度


如果这仍然太慢,您甚至可能希望创建一个cashing变量,在将多个条目写入xml字符串之前一次存储多个条目。

感谢您如此快速地回复。似乎是朝正确方向迈出的一步,但确实会出现以下错误消息。分析错误:语法错误,第13行的/var/www/html/genxml.php中出现意外的“1”(T_LNUMBER),看起来数组中的某些内容已正确关闭?抱歉,我的引号不匹配。我更新了代码。是的,它现在似乎按预期工作。再次感谢你,Nosajimiki和Sergio。所有有用的建议。可能重复的
  $xml .= '<contact display_name="' . $r["name"] . '"office_number="' . $r["cell"] . '" mobile_number="' . $r["cell"] . '"/>';
}