Как сохранить возвращенный объект SimpleXML зарегистрировать?

Так, у меня есть этот код, который ищет конкретный узел в моем XML-файле, сбрасывает существующий узел и вставляет совершенно новый дочерний узел с корректными данными. Существует ли способ заставить эти новые данные сохранять в фактическом XML-файле с simpleXML? В противном случае есть ли другой эффективный способ для того, чтобы сделать это?

public function hint_insert() {

    foreach($this->hints as $key => $value) {

        $filename = $this->get_qid_filename($key);

        echo "$key - $filename - $value[0]<br>";

        //insert hint within right node using simplexml
        $xml = simplexml_load_file($filename);

        foreach ($xml->PrintQuestion as $PrintQuestion) {

            unset($xml->PrintQuestion->content->multichoice->feedback->hint->Passage);

            $xml->PrintQuestion->content->multichoice->feedback->hint->addChild('Passage', $value[0]);

            echo("<pre>" . print_r($PrintQuestion) . "</pre>");
            return;

        }

    }

}
34
задан ThinkingInBits 5 August 2010 в 19:24
поделиться

2 ответа

Не уверен, что понимаю суть вопроса. Метод asXML() принимает необязательное имя файла в качестве параметра, который сохранит текущую структуру как XML в файл. Поэтому после обновления XML с помощью подсказок просто сохраните его обратно в файл.

// Load XML with SimpleXml from string
$root = simplexml_load_string('<root><a>foo</a></root>');
// Modify a node
$root->a = 'bar';
// Saving the whole modified XML to a new filename
$root->asXml('updated.xml');
// Save only the modified node
$root->a->asXml('only-a.xml');
65
ответ дан 27 November 2019 в 16:39
поделиться

Если вы хотите сохранить то же самое, вы можете использовать dom_import_simplexml для преобразования в DomElement и сохранения:

$dom = new DOMDocument('1.0');
$dom->preserveWhiteSpace = false;
$dom->formatOutput = true;
$dom->loadXML($simpleXml->asXML());
echo $dom->saveXML();
2
ответ дан 27 November 2019 в 16:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: