我正在将PHP变量转换为XML格式。
我注意到,当我只是使用DOMDocument和以下代码;
$dom->formatOutput = true;
创建XML时,它会正确地进行格式化(即行缩进等)。
仅使用DOMDocument的代码:
$dom = new DOMDocument('1.0','UTF-8');
$dom->formatOutput = true;
$root = $dom->createElement('student');
$dom->appendChild($root);
$result = $dom->createElement('result');
$root->appendChild($result);
$result->setAttribute('id', 1);
$result->appendChild( $dom->createElement('name', 'Opal Kole') );
$result->appendChild( $dom->createElement('sgpa', '8.1') );
$result->appendChild( $dom->createElement('cgpa', '8.4') );
echo '<xmp>'. $dom->saveXML() .'</xmp>';
$dom->save('result.xml') or die('XML Create Error');
**结果**
<?xml version="1.0" encoding="UTF-8"?>
<student>
<result id="1">
<name>Opal Kole</name>
<sgpa>8.1</sgpa>
<cgpa>8.4</cgpa>
</result>
</student>
然而,如果我尝试使用 domDocument 和 simplexml,它将不再正确格式化;以下是问题的示例:
$dom = new domDocument;
$dom->formatOutput = true;
$root = $dom->appendChild($dom->createElement( "user" ));
$sxe = simplexml_import_dom( $dom );
$sxe->addChild("firstname", "John");
$sxe->addChild("surname", "Brady");
$sxe->asXML('testingXML.xml');
结果:
<?xml version="1.0"?>
<user><firstname>John</firstname><surname>Brady</surname></user>
您会注意到它不再按照所需的方式进行格式化。
我已经按照在线教程示例将简单的xml与dom结合使用,但它们都没有正确格式化。
更新:我尝试了论坛上的许多解决方案,但似乎没有一个适用于我。
不过,我刚刚找到了这个解决方案- 它确实可行- 但是它很冗长。它要求我首先使用SimplyXML保存文件,然后重新加载保存的文件,现在使用DocumentDom再次保存文件。
$sxe->asXML('simple_xml_create.xml');
$simplexml = simplexml_load_file("simple_xml_create.xml");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simplexml->asXML());
$xml = new SimpleXMLElement($dom->saveXML());
$xml->saveXML("simple_xml_create.xml");
有没有更加优雅的解决方案?