/** @return X */ public function e() { return dfc($this, function () { return df_xml_parse($this[self::$P__E]); }); }
/** * 2016-09-01 * @see df_xml_s() * @param string|X $x * @return X */ function df_xml_x($x) { return $x instanceof X ? $x : df_xml_parse($x); }
/** * 2016-08-31 * @return string */ private function _p() { /** @var string $result */ /** * Обратите внимание, что метод ядра Magento CE * @see \Magento\Framework\Simplexml\Element::asNiceXml() * не сохраняет в документе XML блоки CDATA, * а вместо этого заменяет недопустимые для XML символы их допустимыми кодами, * например: & => & * * Также @see \Magento\Framework\Simplexml\Element::asNiceXml() * не добавляет к документу заголовок XML: его надо добавить вручную. * * 2015-02-27 * Обратите внимание, что для конвертации объекта класса @see SimpleXMLElement в строку * надо использовать именно метод @uses SimpleXMLElement::asXML(), * а не @see SimpleXMLElement::__toString() или оператор (string)$this. * * @see SimpleXMLElement::__toString() и (string)$this * возвращают непустую строку только для концевых узлов (листьев дерева XML). * Пример: <?xml version='1.0' encoding='utf-8'?> <menu> <product> <cms> <class>aaa</class> <weight>1</weight> </cms> <test> <class>bbb</class> <weight>2</weight> </test> </product> </menu> * Здесь для $e1 = $xml->{'product'}->{'cms'}->{'class'} * мы можем использовать $e1->__toString() и (string)$e1. * http://3v4l.org/rAq3F * Однако для $e2 = $xml->{'product'}->{'cms'} * мы не можем использовать $e2->__toString() и (string)$e2, * потому что узел «cms» не является концевым узлом (листом дерева XML). * http://3v4l.org/Pkj37 * Более того, метод @see SimpleXMLElement::__toString() * отсутствует в PHP версий 5.2.17 и ниже: * http://3v4l.org/Wiia2#v500 */ /** @var string $header */ $header = $this[self::P__SKIP_HEADER] ? '' : df_xml_header($this[self::P__1251] ? 'Windows-1251' : 'UTF-8'); /** @var X $x */ $x = df_xml_parse(df_cc_n($header, $this[self::P__DOC_TYPE], sprintf('<%s/>', $this[self::$P__TAG]))); $x->addAttributes($this[self::P__ATTRIBUTES]); $x->importArray($this[self::$P__CONTENTS], $this[self::P__WRAP_IN_CDATA]); /** @var bool $pretty */ $pretty = $this[self::P__PRETTY]; $result = $this[self::P__SKIP_HEADER] ? $x->asXMLPart() : ($pretty || $this[self::P__1251] ? df_cc_n($header, $pretty ? $x->asNiceXml() : $x->asXMLPart()) : $x->asXML()); // Убеждаемся, что asXML вернуло строку, а не false. df_assert_ne(false, $result); /** * Символ 0xB (вертикальная табуляция) допустим в UTF-8, но недопустим в XML: * http://stackoverflow.com/a/10095901 */ $result = str_replace("\v", "", $result); if ($this[self::P__1251]) { $result = df_1251_to($result); } if ($this[self::P__REMOVE_LINE_BREAKS]) { $result = df_t()->removeLineBreaks($result); } if ($this[self::P__DECODE_ENTITIES]) { $result = html_entity_decode($result, ENT_NOQUOTES, 'UTF-8'); } return $result; }