【问题标题】:Add new XML element through PHP DOM Manipulation通过 PHP DOM Manipulation 添加新的 XML 元素
【发布时间】:2021-02-15 05:01:36
【问题描述】:

我正在尝试向此 XML 文档添加一个名为 member 的新 XML 元素:

<?xml version="1.0" encoding="UTF-8"?>
<members>
    <member id="1" position="president">
        <firstname>John</firstname>
        <surname>Smith</surname>
        <score>12</score>
    </member>
    <member id="2">
        <firstname>Hank</firstname>
        <surname>Rogers</surname>
        <score>18</score>
    </member>
    <member id="3" position="secretary">
        <firstname>Joe</firstname>
        <surname>Ashton</surname>
        <score>21</score>
    </member>
</members>

这是我的 php 脚本:

function updateDom() {
        $dom = new DOMDocument();
        $dom->preserveWhiteSpace = false;
        $dom->load("members.xml");

        $member = $dom->createElement("member");
        $firstname = $dom->createElement("firstname");
        $surname = $dom->createElement("surname");
        $score = $dom->createElement("score");
        
        $firstnameValue = $dom->createTextNode("New");
        $surnameValue = $dom->createTextNode("New");
        $scoreValue = $dom->createTextNode("New");

        $firstname->appendChild($firstnameValue);
        $surname->appendChild($surnameValue);
        $score->appendChild($scoreValue);

        $dom->documentElement->appendChild($member);
        print $dom->saveXML();
    }

不幸的是,当我print $dom-&gt;saveXML(); 新元素没有插入到 DOM 中时,它确实会打印出来:

JohnSmith12HankRogers18JoeAshton21
  • 我该如何解决?

【问题讨论】:

    标签: php dom dom-manipulation


    【解决方案1】:

    如果您检查输出 XML,您会在末尾看到一个空的 &lt;member/&gt;,因为您没有将任何子元素附加到 $member

    function updateDom() {
        $dom = new DOMDocument();
        $dom->preserveWhiteSpace = false;
        $dom->load("members.xml");
    
        $member = $dom->createElement("member");
        $firstname = $dom->createElement("firstname");
        $surname = $dom->createElement("surname");
        $score = $dom->createElement("score");
    
        $firstnameValue = $dom->createTextNode("New");
        $surnameValue = $dom->createTextNode("New");
        $scoreValue = $dom->createTextNode("New");
    
        $firstname->appendChild($firstnameValue);
        $surname->appendChild($surnameValue);
        $score->appendChild($scoreValue);
    
        // Append child elements
        $member->appendChild($firstname);
        $member->appendChild($surname);
        $member->appendChild($score);
    
        $dom->documentElement->appendChild($member);
        print $dom->saveXML();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2020-11-03
      • 2011-03-15
      • 1970-01-01
      • 2019-05-24
      相关资源
      最近更新 更多