没有xml标签与SimpleXML是一个DOM文档

时间:2016-12-04 12:43:59

标签: php xml loops dom simplexml

我需要你对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>

请帮帮我。感谢

1 个答案:

答案 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中的一个提取。