DOMDocument 객체는 좋지만 큰 XML 파일의 경우 XMLWriter을 사용하면 XML 파일을 메모리에 저장하는 대신 스트림으로 쓸 수 있습니다.
대신 createElement
및 appendChild
, 당신은 startElement
및 endElement
및/또는 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으로 변환 할 수는 없습니다.
고마워, Theo! 참으로 위대한 답입니다! – CharliePrynn
@CharliePrynn 문제 없습니다. 커뮤니티를 도울 수있어서 다행입니다. –