如何通过PHP在带有soap标记的xml字符串中添加子项

问题描述 投票:1回答:1

我试图在articoli节点添加一个Child,但当我执行代码时,我收到此错误,我做错了什么?

SimpleXMLElement :: addChild():无法添加子项。 Parent不是XML树的永久成员

   <?php
    $note='<?xml version="1.0" encoding="utf-8"?>
    <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
      <soap12:Body>
      <AddPrenotazione>
          <sessionId>6355aa2c-21f5-4436-8fef-24f0211bbd86</sessionId>
          <guid>4353999998999999</guid>
          <articoli>
          </articoli>
        </AddPrenotazione>
        </soap12:Body>
    </soap12:Envelope>';

    $xml = simplexml_load_string($note);
    $xml->children('soap12', true)->Body->articoli->addChild("ArticoloPrenotazione","");

    echo $xml->asXML();
    ?>
php xml soap xml-parsing
1个回答
0
投票

设置值时,您的XML结构需要几个额外的部分......

$xml->children('soap12', true)->Body->children()
          ->AddPrenotazione->articoli->addChild("ArticoloPrenotazione","");

您错过了AddPrenotazione级别,但由于这与Body元素位于不同的名称空间,因此您还需要使用children()从默认名称空间中获取元素。

© www.soinside.com 2019 - 2024. All rights reserved.