2011-01-08 20 views
1

需要關於xml文件的幫助來爲我的flash網站編輯內容,每當我插入textarea例如「name」它會在xml中創建新的活動,我需要它會從「游泳」變爲「名字」。 我已經發現了XML,要改變內容,我需要刪除「游泳」,並插入「名稱」用php textarea更新xml文件中的測試提交

如何做到這一點,首先將內容插入到textarea中 - >按下「update」時保存它 - >從xml文件中刪除舊活動並將新內容插入到xml文件中?

sample.xml中

<?xml version="1.0"?> 
<list> 
    <activity>swimming</activity> 
</list> 

的index.php

<html> 
<head><title>test</title></head> 
</head> 

<body> 


<table width="100" border="1"> 
    <tr> 
    <td><?php 
    $xmldoc = new DOMDocument(); 
    $xmldoc->load("sample.xml", LIBXML_NOBLANKS); 

    $activities = $xmldoc->firstChild->firstChild; 
    if($activities!=null){ 
     while($activities!=null){ 
      echo $activities->textContent.""; 
      $activities = $activities->nextSibling; 
     } 
    } 
?></td> 
    </tr> 
    <tr> 
    <td><form name="input" action="insert.php" method="post"> 

     <textarea name="activity" cols="70" rows="10"><?php 
    $xmldoc = new DOMDocument(); 
    $xmldoc->load("sample.xml", LIBXML_NOBLANKS); 

    $activities = $xmldoc->firstChild->firstChild; 
    if($activities!=null){ 
     while($activities!=null){ 
      echo $activities->textContent.""; 
      $activities = $activities->nextSibling; 
     } 
    } 
?></textarea> 
    </td> 
    </tr> 
    <tr> 
    <td align="right"><input type="submit" value="Update"/> 
    <input name="reset" type="reset" id="reset" value="Reset"> 
</form></td> 
    </tr> 
</table> 

</body> 
</html> 

insert.php

<?php 
    header('Location:index.php'); 
    $xmldoc = new DOMDocument(); 
    $xmldoc->load('sample.xml'); 

    $newAct = $_POST['activity']; 

    $root = $xmldoc->firstChild; 

    $newElement = $xmldoc->createElement('activity'); 
    $root->appendChild($newElement); 
    $newText = $xmldoc->createTextNode($newAct); 
    $newElement->appendChild($newText); 

    $xmldoc->save('sample.xml'); 
?> 

謝謝大家對您的幫助!

+0

你不是HTML轉義`echo $ activities-> textContent。「」;`。 OTOH使用DOMDocument的XML而不是一些正則表達式的混亂:) – Kornel 2011-01-11 12:52:57

回答

1

好的,我有我自己管理的,如果需要添加或在網頁上刪除內容只是從上覆制所有除insert.php

新insert.php

<?php 
$xmldoc = new DOMDocument; 
$xmldoc->load('sample.xml'); 
foreach ($xmldoc->getElementsByTagName('activity') as $activity) 
{ 
    $activity->parentNode->removeChild($activity); 
} 
$xmldoc->save('sample.xml'); 

?> 

<?php 

    $xmldoc = new DOMDocument(); 
    $xmldoc->load('sample.xml'); 

    $newAct = $_POST['activity']; 

    $root = $xmldoc->firstChild; 

    $newElement = $xmldoc->createElement('activity'); 
    $root->appendChild($newElement); 
    $newText = $xmldoc->createTextNode($newAct); 
    $newElement->appendChild($newText); 

    $xmldoc->save('sample.xml'); 

?> 

這一切都歸功於