如何将更改后的SimpleXML对象保存回文件? [英] How to save changed SimpleXML object back to file?
问题描述
因此,我有这段代码可以搜索我的XML文件中的特定节点,取消设置现有节点并插入带有正确数据的全新子节点.有没有一种方法可以使用simpleXML将这些新数据保存在实际的XML文件中?如果没有,还有其他有效的方法吗?
So, I have this code that searches for a particular node in my XML file, unsets an existing node and inserts a brand new child node with the correct data. Is there a way of getting this new data to save within the actual XML file with simpleXML? If not, is there another efficient method for doing this?
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;
}
}
}
推荐答案
不确定我是否理解此问题. asXML()
方法接受可选的文件名作为参数,以保存当前结构作为XML到文件.因此,一旦使用提示更新了XML,只需将其保存回文件中即可.
Not sure I understand the issue. The asXML()
method accepts an optional filename as param that will save the current structure as XML to a file. So once you have updated your XML with the hints, just save it back to file.
// 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');
这篇关于如何将更改后的SimpleXML对象保存回文件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!