xml — вызов PHP для неопределенного метода DOMElement

У меня есть класс Wrap для создания XML-файла, и я не знаю, как переписать метод add () для правильной работы. Переменная SHOPITEM должна быть родительским элементом, но я не знаю, как ее достичь в методе add.

Любые советы приветствуются

  class Items {

const XML_VERSION enter code here= '1.0';
const XML_ENCODING = 'utf-8';
const SHOP = 'SHOP';

private $xml, $xmlElement;

public function __construct() {
$this->xml = new DOMDocument(self::XML_VERSION, self::XML_ENCODING);
//$this->xml->preserveWhiteSpace = false;
$this->xml->formatOutput = true;
$this->xmlElement = $this->create(self::SHOP);
}

public function create($nodeName, $value = null) {
return $this->xml->createElement($nodeName, $value);
}

public function add($object) {
return $this->xmlElement->appendChild($object);
}

public function write() {
$this->xml->appendChild($this->xmlElement);
$this->xml->save("test.xml");
}

}

$items = new Items();
$SHOPITEM = $items->create('SHOPITEM');
$product1 = $items->create('Product1', 'Some value 1');
$product2 = $items->create('Product2', 'Some value 2');

//this wont work
$SHOPITEM->add($product1);

//this works
$items->add($product1);
$items->add($product2);

//this works
$items->add($SHOPITEM);

$items->write();

1

Решение

Ваш $SHOPITEM, $product1 а также $product2 являются экземплярами вновь добавленного узла (то есть класса DOMElement), потому что они являются результатом оператора

return $this->xml->createElement($nodeName, $value);

Так что у них просто есть способ add($object) что вы хотите использовать на них.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]