2011-01-10 203 views
1

我想写在xml文件上。 但我的服务器已禁用DOM。 所以我不能使用DOM功能。有没有办法在没有DOM的情况下写入/删除xml文件?

有没有一种方法可以在XML上编写其他的DOM?

文件:

XML:

<?xml version="1.0" encoding="UTF-8"?> 
<events> 
<record> 
<event>aaa</event> 
<eventDate>bbb</eventDate> 
<desc>ccc</desc> 
</record> 

parser.php:

header("Content-type: text/html; charset=utf-8"); 

$record = array(
    'event' => $_POST['event'], 
    'eventDate' => $_POST['eventDate'], 
    'desc' => $_POST['desc'], 
); 

$doc = new DOMDocument(); 
$doc->load('calendar.xml'); 

$doc->formatOutput = true; 
$r = $doc->getElementsByTagName("events")->item(0); 

$b = $doc->createElement("record"); 

$event = $doc->createElement("event"); 
$event->appendChild(
    $doc->createTextNode($record["event"]) 
); 
$b->appendChild($event); 

$eventDate = $doc->createElement("eventDate"); 
$eventDate->appendChild(
    $doc->createTextNode($record["eventDate"]) 
); 
$b->appendChild($eventDate); 

$desc = $doc->createElement("desc"); 
$desc->appendChild(
    $doc->createTextNode($record["desc"]) 
); 

$b->appendChild($desc); 
$r->insertBefore($b,$r->firstChild); 

$doc->save("calendar.xml"); 

header("Location: {$_SERVER['HTTP_REFERER']}");  

我可以做什么?

+1

DOM默认情况下,在PHP5启用。如果您的主机禁用了它,请问他们为什么因为没有理由这样做。更好的是,切换提供商。 – Gordon 2011-01-10 13:41:32

回答

1

,如果你正在使用PHP5,你可以使用SimpleXML

+0

有趣的是,libxml已被禁用... – ajreal 2011-01-10 13:36:21

0

您可以编辑文件,就好像它是纯文本文件一样。但是,您需要确保所有元素都已关闭,并且所有数据都能正确转义。如果你只需要输出XML这是可行的,但编写一个可以添加和修改现有XML数据的解析器是一项艰巨的工作。最好尝试启用DOM或找到一个开箱即用的库。

相关问题