我有用于创建xml文件的wrap类,我不知道如何重写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();
答案 0 :(得分:0)
您的$SHOPITEM
,$product1
和$product2
是新添加的节点(即DOMElement类)的实例,因为它们是语句的结果
return $this->xml->createElement($nodeName, $value);
所以他们只是想让你想要使用的方法add($object)
。