[英]How to convert PHP array to DOM XML nodeList?
我正在寻找一个DOM XML函数来转换PHP数组,如下所示:
<?php
$errors = array("A", "B", "C", "D");
?>
到DOM XML NodeList
<?xml version="1.0" standalone="no"?>
<error>
<missing>A</missing>
<missing>B</missing>
<missing>C</missing>
<missing>D</missing>
</error>
非常感谢您的帮助 :)
我尝试了以下代码:
<?php
$basedoc = new DomDocument();
$basedoc->Load("Standard.svg"); //Fichier SVG de base
$baseroot = $basedoc->documentElement; //On prend l'élément racine
$errorgroup = $basedoc->createElement('error'); //On crée le groupe de base
foreach($erreurs as $erreur) {
$missinggroup = $errorgroup->createElement('missing'); //On crée le groupe de base
$errorgroup->appendChild($missinggroup);
}
$baseroot->appendChild($errorgroup);
?>
我认为这太简单了,无法使用DomXML函数。 我认为您应该为此XML创建简单的视图模板-它看起来像这样:
<?xml version="1.0" standalone="no"?>
<error>
<?php foreach ($errors as $error):?>
<missing><?php echo $error;?></missing>
<?php endforeach;?>
</error>
确切的模板结构当然取决于您的框架-在zend中,它将是$ this-> errors而不是$ errors。
Od在第一个链接中使用@ bassem-ala表示的SimpleXML。
更新
这是基于表生成XML的“递归”函数。 像这样
function generateXMLElement($elements, $rootNode = null, $rootNodeName = 'xml')
{
if (!$rootNode)
{
$rootNode = new SimpleXMLElement('<'.$rootNodeName.'/>');
}
foreach ($elements as $key => $val)
{
if (is_array($val))
{
$childElem = $rootNode->addChild($key);
generateXMLElement($val, $childElem);
}
else
{
$childElem = $rootNode->addChild($key, $val);
}
}
return $rootNode;
}
您可以使用$xml = generateXMLElement($errors, null, 'error');
获得XML $xml = generateXMLElement($errors, null, 'error');
然后可以使用print($xml->asXML());
进行print($xml->asXML());
您不会在创建代码中的任何地方使用$erreur
,因此显然不会在生成的XML中使用$erreur
。 同样,您不能从DOMElement
创建Element,而必须从DOMDocument
创建它。 您的代码将出现致命错误。
更改
$missinggroup = $errorgroup->createElement('missing');
至
$missinggroup = $basedoc->createElement('missing', $erreur);
然后它将起作用: http : //codepad.org/GmCIBIQW
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.