WC_API_XML_Handler::array_to_xml()
Convert array into XML by recursively generating child elements
Метод класса: WC_API_XML_Handler{}
Хуков нет.
Возвращает
Строку
. - generated XML
Использование
// private - только в коде основоного (родительского) класса $result = $this->array_to_xml( $element_key, $element_value );
- $element_key(строка|массив) (обязательный)
- - name for element, e.g. <OrderID>
- $element_value(строка|массив)
- - value for element, e.g. 1234
По умолчанию: array()
Список изменений
С версии 2.1 | Введена. |
Код WC_API_XML_Handler::array_to_xml() WC API XML Handler::array to xml WC 7.7.0
private function array_to_xml( $element_key, $element_value = array() ) { if ( is_array( $element_value ) ) { // handle attributes if ( '@attributes' === $element_key ) { foreach ( $element_value as $attribute_key => $attribute_value ) { $this->xml->startAttribute( $attribute_key ); $this->xml->text( $attribute_value ); $this->xml->endAttribute(); } return; } // handle multi-elements (e.g. multiple <Order> elements) if ( is_numeric( key( $element_value ) ) ) { // recursively generate child elements foreach ( $element_value as $child_element_key => $child_element_value ) { $this->xml->startElement( $element_key ); foreach ( $child_element_value as $sibling_element_key => $sibling_element_value ) { $this->array_to_xml( $sibling_element_key, $sibling_element_value ); } $this->xml->endElement(); } } else { // start root element $this->xml->startElement( $element_key ); // recursively generate child elements foreach ( $element_value as $child_element_key => $child_element_value ) { $this->array_to_xml( $child_element_key, $child_element_value ); } // end root element $this->xml->endElement(); } } else { // handle single elements if ( '@value' == $element_key ) { $this->xml->text( $element_value ); } else { // wrap element in CDATA tags if it contains illegal characters if ( false !== strpos( $element_value, '<' ) || false !== strpos( $element_value, '>' ) ) { $this->xml->startElement( $element_key ); $this->xml->writeCdata( $element_value ); $this->xml->endElement(); } else { $this->xml->writeElement( $element_key, $element_value ); } } return; } }