我需要你对SimpleXML和DOMDocument的帮助。我将播下你当前的代码,然后解释我的问题:
$xml = new SimpleXMLElement('<milu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file://milu.xsd"/>');
$dom = dom_import_simplexml($xml);
$version = $xml->addChild('VERSION', date('m.d.Y'));
while ($row= mysql_fetch_assoc($res)) {
$bev = $xml->addChild('JUICE');
$bev->addAttribute('ID', $row["id"]);
// var_dump($row["name1_german"]);
$bev->addChild('01', $row["Value1"]);
$bev->addChild('02', $row["Value1"]);
$bev->addChild('03', $row["Value1"]);
$bev->addChild('04', $row["Value1"]);
}
$dom_sxe = dom_import_simplexml($xml); // Returns a DomElement object
$dom_output = new DOMDocument('1.0');
$dom_output->formatOutput = true;
$dom_sxe = $dom_output->importNode($dom_sxe, true);
$dom_sxe = $dom_output->appendChild($dom_sxe);
header('Content-Disposition: attachment; filename="milu.xml"');
echo $dom_output->saveXML($dom_output, LIBXML_NOEMPTYTAG);
生成的.xml文件的第一行的输出是:
<?xml version="1.0" encoding="UTF-8"?>
是否可能没有显示DOMDocument?
我的第二个问题是,我想要一个围绕这个循环的孩子:
<JUICE ID="0000000000">
<CONFIG MODELID="2">
<01>value1</01>
<02>value2</02>
<03>value3</03>
<04>value4</04>
</CONFIG>
</JUICE>
请帮帮我。感谢
答案 0 :(得分:0)
要删除XML声明标记,请使用仅输出根及其子项的documentElement
属性:
echo $dom_output->saveXML($dom_output->documentElement, LIBXML_NOEMPTYTAG);
要添加 CONFIG 子项,只需在$bev
下添加一个子项,并将每个编号的节点指定为子项:
if ($res = $dbconn->query($query)) {
while ($row = $res->fetch_assoc()) {
$bev = $xml->addChild('JUICE');
$bev->addAttribute('ID', $row["id"]);
$config = $bev->addChild('CONFIG');
$config->addAttribute('MODELID', '2');
$config->addChild('01', $row["Value1"]);
$config->addChild('02', $row["Value2"]);
$config->addChild('03', $row["Value3"]);
$config->addChild('04', $row["Value4"]);
}
}
<强>输出强>
<milu xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="file://milu.xsd">
<VERSION>12.04.2016</VERSION>
<JUICE ID="0000000000">
<CONFIG MODELID="2">
<01>value1</01>
<02>value2</02>
<03>value3</03>
<04>value4</04>
</CONFIG>
</JUICE>
</milu>
最后,注意mysql_*
函数已在PHP 5中弃用,并在PHP 7中完全删除。考虑使用不同的PHP MySQL API,如mysqli或PDO。上图显示了mysqli中的一个提取。