diff --git a/ext/dom/tests/modern/xml/serialize_LIBXML_NOXMLDECL.phpt b/ext/dom/tests/modern/xml/serialize_LIBXML_NOXMLDECL.phpt new file mode 100644 index 0000000000000..59d1ea149231e --- /dev/null +++ b/ext/dom/tests/modern/xml/serialize_LIBXML_NOXMLDECL.phpt @@ -0,0 +1,13 @@ +--TEST-- +Serialize modern document with LIBXML_NOXMLDECL +--EXTENSIONS-- +dom +--FILE-- +'); +echo $dom->saveXml(options: LIBXML_NOXMLDECL), "\n"; + +?> +--EXPECT-- + diff --git a/ext/dom/xml_document.c b/ext/dom/xml_document.c index 2ad0ebc895d16..fd5ded5b1a66d 100644 --- a/ext/dom/xml_document.c +++ b/ext/dom/xml_document.c @@ -257,12 +257,12 @@ static int php_new_dom_write_smart_str(void *context, const char *buffer, int le return len; } -static zend_string *php_new_dom_dump_node_to_str(xmlDocPtr doc, xmlNodePtr node, bool format, const char *encoding) +static zend_string *php_new_dom_dump_node_to_str_ex(xmlNodePtr node, int options, bool format, const char *encoding) { smart_str str = {0}; int status = -1; - xmlSaveCtxtPtr ctxt = xmlSaveToIO(php_new_dom_write_smart_str, NULL, &str, encoding, XML_SAVE_AS_XML); + xmlSaveCtxtPtr ctxt = xmlSaveToIO(php_new_dom_write_smart_str, NULL, &str, encoding, XML_SAVE_AS_XML | options); if (EXPECTED(ctxt != NULL)) { xmlCharEncodingHandlerPtr handler = xmlFindCharEncodingHandler(encoding); xmlOutputBufferPtr out = xmlOutputBufferCreateIO(php_new_dom_write_smart_str, NULL, &str, handler); @@ -284,9 +284,14 @@ static zend_string *php_new_dom_dump_node_to_str(xmlDocPtr doc, xmlNodePtr node, return smart_str_extract(&str); } +static zend_string *php_new_dom_dump_node_to_str(xmlDocPtr doc, xmlNodePtr node, bool format, const char *encoding) +{ + return php_new_dom_dump_node_to_str_ex(node, 0, format, encoding); +} + static zend_string *php_new_dom_dump_doc_to_str(xmlDocPtr doc, int options, const char *encoding) { - return php_new_dom_dump_node_to_str(doc, (xmlNodePtr) doc, options & XML_SAVE_FORMAT, encoding); + return php_new_dom_dump_node_to_str_ex((xmlNodePtr) doc, options, options & XML_SAVE_FORMAT, encoding); } zend_long php_new_dom_dump_node_to_file(const char *filename, xmlDocPtr doc, xmlNodePtr node, bool format, const char *encoding)