【问题标题】:How to create a multi-level XML file from an array?如何从数组创建多级 XML 文件?
【发布时间】:2017-09-07 06:39:45
【问题描述】:

我有一个数组

$arr=array("A","B","C");

我想创建一个像这样的多级 XML

<root>
  <error>
    <A>
      <B>
        <C>
          <D/>
        </C>
      </B>
    </A>
  </error>
</root>

我把代码写成

$arr = array("A", "B", "C", "D");
$doc = new DomDocument();
$doc->formatOutput=true;
$doc->LoadXML('<root/>');
$root = $doc->documentElement;
$errorgroup = $doc->createElement('error');
$root->appendChild($errorgroup);
foreach($arr as $erreur) {
    $missinggroup = $doc->createElement($erreur);
    $errorgroup->appendChild($missinggroup);
    $errorgroup=$doc->createElement($erreur);
}
echo $doc->saveXml();

但输出仅在 XML 内部错误中显示&lt;A/&gt;,而不是其余的 B 和 C。我这里哪里出错了?

【问题讨论】:

    标签: php arrays xml tree


    【解决方案1】:

    希望这篇文章会有所帮助。

    问题: $errorgroup=$doc-&gt;createElement($erreur);我不知道你想用这条线做什么。

    改变这个:

    $errorgroup=$doc->createElement($erreur);
    

    至此:

    $errorgroup=$missinggroup;
    

    Try this code snippet here

    <?php
    
    ini_set('display_errors', 1);
    
    $arr = array("A", "B", "C", "D");
    $doc = new DomDocument();
    $doc->formatOutput=true;
    $doc->LoadXML('<root/>');
    $root = $doc->documentElement;
    $errorgroup = $doc->createElement('error');
    $root->appendChild($errorgroup);
    foreach($arr as $erreur) {
        $missinggroup = $doc->createElement($erreur);
        $errorgroup->appendChild($missinggroup);
        $errorgroup=$missinggroup;
    }
    echo $doc->saveXml();
    

    输出:

    <root>
      <error>
        <A>
          <B>
            <C>
              <D/>
            </C>
          </B>
        </A>
      </error>
    </root>
    

    【讨论】:

    • @timukh 希望这篇文章对您有所帮助。
    • 是的,它正在工作!太感谢了。我现在知道我哪里出错了。再次感谢!
    • 是的,我会的,但有一个最短时间,在此之前网站不允许我接受答案。它显示“您可以在 5 分钟内接受答案”。所以我会在 5 分钟后 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多