2014-06-15 114 views
0

我有写入特定字符串到XML文件的问题。PHP写入XML文件

的XML结构是这样的:

<ePrekrsaji> 
<time> 
<shift hours="48"/> 
</time> 
</ePrekrsaji> 

我用犯规的代码似乎工作:

$my_file = "hours.xml"; 

$hours = 5 

$xml = new DOMDocument(); 
$xml->load($my_file); 
$xml_hours = $xml->createElement($hours); 
$nodes = $xml->getElementsByTagName('shift ') ; 
if ($nodes->length > 0) { 
    $xml->appendChild($xml_hours); 
} 
$xml->save($my_file); 

错误,我得到 致命错误:未捕获的异常 '抛出:DOMException' 有消息“无效字符错误'in /var/www/WebDiP/2013_projekti/WebDiP2013_031/skripte/vrijeme.php:17堆栈跟踪:#0 /var/www/WebDiP/2013_projekti/WebDiP2013_031/skripte/vrijeme.php(17):DOMDocument-> createElement ('')#1 {main}抛出/ var/www/WebDiP/2013_projekti/WebDiP2013_031/skrip te/vrijeme.php on line 17

如何写入此特定节点?

我想最终的结果是:

<ePrekrsaji> 
    <time> 
    <shift hours="5"/> 
    </time> 
</ePrekrsaji> 
+0

您是否尝试过使用SimpleXML类? – Cristian

+0

我不太擅长XML,所以不知道它是如何工作:) – klanc

回答

0

我发布你SimpleXML一流的解决方案,所以我们使用file_get_contents那么我们编辑的属性shifthours从文件中获取数据,然后我们保存的内容与file_put_contents

$file = "hours.xml"; 
$xml_data = file_get_contents($file); 
$xml = new SimpleXMLElement($xml_data); 
$xml->time->shift->attributes()->hours = 5; 
file_put_contents($file, $xml->asXML()); 
0

您试图创建一个元素<5 />,你确定这是正确的元素名称?

我想你想让圣。像这样:

$xml_hours = $xml->createElement('hours', $hours); 
+0

我想添加到我现有的结构,所以它写入“5”而不是“48” – klanc

0

下面是您的代码的更正版本。 你只需要得到第一个shift元素,然后设置它的属性。

$file = "hours.xml"; 
$hours = 6; 

$xml = new DOMDocument(); 
$xml->load($file); 

// get list of all shift elements 
$nodes = $xml->getElementsByTagName('shift'); 
// get first shift element 
$xmlShift = $nodes->item(0); 
// set attribute "hours" 
$xmlShift->setAttribute("hours", $hours); 

$xml->save($file);