我有这个simplexml脚本,用于发布从表单输入的数据。
$xml = simplexml_load_file("links.xml");
$sxe = new SimpleXMLElement($xml->asXML());
$person = $sxe->addChild("link");
$person->addChild("title", "Q: ".$x_title);
$person->addChild("url", "questions_layout.php#Question$id");
$sxe->asXML("links.xml");
当它出现时,它在一行上看起来像这样:
<link><title>Alabama State</title><url>questions_layout.php#Question37</url></link><link><title>Michigan State</title><url>questions_layout.php#Question37</url></link></pages>
但是我已经尝试了HERE和THIS AS WELL找到的方法,但是在行中没有正确格式化XML,因为它们应该像
<link>
<title></title>
<url></url>
</link>
在第一个参考链接中,我甚至将loadXML
更改为load
,因为loadXML
期望字符串为XML。有人可以帮我找到解决方案吗?
答案 0 :(得分:8)
AFAIK simpleXML无法独立完成。
然而,DOMDocument可以。
$dom = dom_import_simplexml($sxe)->ownerDocument;
$dom->formatOutput = TRUE;
$formatted = $dom->saveXML();
答案 1 :(得分:2)
我认为上面接受来自stackoverflow权威的答案并未解决上述问题。
参考:[我尝试了你的答案,我收到致命错误:在$formatted = $dom->saveXML();
$simplexml = simplexml_load_file("links.xml");
$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simplexml->asXML());
$xml = new SimpleXMLElement($dom->saveXML());
$person = $xml->addChild("link");
$person->addChild("title", "Q: ".$x_title);
$person->addChild("url", "questions_layout.php#Question$id");
$xml->saveXML("links.xml");
答案 2 :(得分:0)
这段代码对我有用,也很干净:
header('Content-type: text/xml');
echo $xml->asXML();
其中$ xml是SimpleXMLElement-此代码将以以下方式打印XML
<Attribute>
<ChildAttribute>Value</ChildAttribute>
</Attribute>
这取自official PHP documentation SimpleXMLElement::asXML
希望这对您有帮助!