У меня есть этот скрипт 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>
Но я пробовал метод, найденный ЗДЕСЬ И ЭТО ТАК ЖЕ, но ни один формат XML правильно в строках, поскольку они должны быть похожи
<link> <title></title> <url></url> </link>
В первой ссылке ссылки я даже изменил loadXML
для load
, потому что loadXML
ожидает строку как XML. Может ли кто-нибудь помочь мне найти решение этого, пожалуйста?
AFAIK simpleXML не может сделать это самостоятельно.
Однако DOMDocument может.
$dom = dom_import_simplexml($sxe)->ownerDocument; $dom->formatOutput = TRUE; $formatted = $dom->saveXML();
Я думаю, что выше принятого ответа от stackoverflow полномочия не решались выше вопроса. Ссылка: [Я пробовал ваш ответ, и я получил Неустранимая ошибка: вызов неопределенного метода DOMElement :: saveXML () в строке, где $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");