DOMDocument 对象很好,但对于大型 XML 文件,您可能更喜欢使用XMLWriter,它允许您将 XML 文件作为流写入,而不是将其保存在内存中。
而不是createElement
and appendChild
,您将需要使用startElement
andendElement
和/或writeElement
。
所以而不是:
$m_content_tag = $doc->createElement("m_content");
$m_content_tag = $message_tag->appendChild($m_content_tag);
$b_control_tag = $doc->createElement("b_control");
$b_control_tag = $m_content_tag->appendChild($b_control_tag);
$b_control_tag->appendChild($doc->createElement('service_provider_reference_number'));
$b_control_tag->appendChild($doc->createElement('intermediary_case_reference_number'));
你需要写:
$writer = new XMLWriter();
$writer->openURI('myfile.xml')
$writer->startElement('messsage_tag');
$writer->startElement("m_content");
$writer->startElement("b_control");
$wrtier->writeElement('service_provider_reference_number', $value1);
$wrtier->writeElement('intermediary_case_reference_number', $value2);
$writer->endElement("b_control");
$writer->endElement("m_content");
$writer->endElement('messsage_tag');
这写起来会更长,但这将花费更少的内存来工作。
顺便说一句,如果你只需要处理 50 个字段,我认为它足够小,可以继续使用 DOMDocument。
使用 DOMDocument 将允许您使用XSLTProcessor,这将允许您将
XSLT文件用作 XML 的模板文件。
这可以通过以下方式完成:
$xsl = new XSLTProcessor();
$xsldoc = new DOMDocument();
$xsldoc->load($xsl_filename);
$xsl->importStyleSheet($xsldoc);
$xmldoc = new DOMDocument();
$xmldoc->load($xml_filename);
echo $xsl->transformToXML($xmldoc);
但这只能通过将 DOMDocument 对象转换为其他对象来实现。XSLTProcessor
例如,您不能使用;将数组转换为 DOM