2013-03-23 23 views
2
<?php 
$files = glob('users/*.xml'); 
foreach($files as $file) { 
    $xml = new SimpleXMLElement($file, 0, true); 
    echo ' 
     <tr> 
      <td><input type="radio" name="browser" onclick="check(this.value)" value="'. basename($file) .'"></td> 
      <td class="alternate-row1">'. basename($file, '.xml') .'</td> 
      <td><span id="itm1" onclick="exchange(this.id)">'. $xml->name .'</span><input id="itm1b" class="replace" type="text" name="newname"></td> 
      <td class="alternate-row1">'. $xml->lastname .'</td> 
      <td>'. $xml->email .'</td> 
      <td class="alternate-row1">'. $xml->level .'</td> 
      <td>'. $xml->birthday .'</td> 
      <td class="alternate-row1">'. $xml->gender .'</td> 
      <td>'. $xml->age .'</td> 
      <td class="alternate-row1">'. $xml->country .'</td> 
     </tr>'; 
} 
session_start(); 
if (isset($_POST['save'])){ 
    $member = $_POST['newname']; 
    $dom = new DOMDocument(); 
    $dom->load('users/' . basename($file) . '.xml'); 
    $editname = $dom->getElementsByTagName('name'); 
    $newname = $dom->createTextNode($member); 
    foreach ($editname as $edit) { 
     $edit->parentNode->replaceChild($newname, $edit); 
    } 
    $dom->save('users/' . basename($file) . '.xml'); 
} 
?> 

所以我製作了這段代碼,就像你看到它有DOM和簡單的XML元素一樣。 我試圖用$_POST throw輸入命令替換子項,輸入框位於上面的echo部分,我使用js替換代碼,它通過onclick命令將文本替換爲輸入文本(對於我的問題來說不是很重要,它只是爲了解釋) 。 無論如何,因爲它不工作,我得到了一點卡住的代碼,我設置了$_POST,我嘗試使用一些指南,我發現堆棧溢出,但它沒有工作,因爲它不符合我的代碼。替換XML中的子項

您有什麼問題嗎?

謝謝你的幫助,Y. D.使用simplexml --->看現場演示

+0

我不敢肯定,但,你的解決方案似乎矯枉過正我。爲什麼不通過ajax調用一個php,並根據結果,從JavaScript更新dom? – Sebas 2013-03-23 12:12:36

+0

沒有...它不可能acctualy從js更新dom,只能從PHP,我的問題是缺少某些東西,或者我使用DOM來代替SimpleXML,但我不知道如何解決它或什麼是我真正的問題,畢竟爲什麼我問這個問題題。 – 2013-03-23 12:15:12

+0

請顯示您的xml和所需的xml樣本。 – michi 2013-03-23 15:06:45

回答

0

例子:http://codepad.viper-7.com/2oR5Wk

$xmlstr = <<<XML 
<root> 
    <head> 
     <name id="1">test</name> 
     <name id="2">file</name> 
     <name id="3">name</name> 
    </head> 
</root> 
XML; 

$xml = simplexml_load_string($xmlstr); 

echo "<pre>"; 
var_dump($xml); 
echo "</pre>"; 

$x = count($xml->head->name)-1; 

for ($x; $x>=0; $x--) { 

    $xml->head->name[$x] = "newname"; 

} 

echo "<pre>"; 
var_dump($xml); 
echo "</pre>";