2013-05-12 60 views
0

所以我有一個網頁顯示XML文件的數據。不過,我也有一個表格,應該能夠更改數據。我想最好的方法是使用PHP中的Fopen函數並編輯特定的文本行。字符串不會很長,最多4個字。我將如何使用fopen以及打開,讀取和寫入文件以查找一行代碼並替換它的一系列函數?我需要找到一種方法來編輯XML文件,當用戶使用PHP提交表單時

+0

我沒有看到一個簡單的方法來實現你正在嘗試做的事情,但是,XML文件是一個非常大的文件嗎?是否可以將整個XML數據發送回服務器並只更新已更改的XML節點? – juanreyesv 2013-05-13 00:01:57

+0

要處理XML,您可以使用SimpleXML庫。這裏是一篇關於如何使用它的文章:http://stackoverflow.com/questions/2092172/edit-xml-with-simplexml – juanreyesv 2013-05-13 00:04:18

+0

@juanreyesv XML文件很小,本身只有27行,但實際數據只有12個短語。這是一個非常簡短的XML文件。 – user2235005 2013-05-13 00:22:13

回答

1

我認爲你應該做類似如下:

  1. 比賽在你的HTML在你的XML節點輸入標籤的名稱(這只是一個建議,讓你的代碼更有條理)

  2. 當您發佈的數據傳回服務器,在你的PHP代碼,使用SimpleXML你可以做以下

給下面的XML文件

<root> 
    <config id="1"> 
     <name>old name</name> 
     <category>old category</category> 
    </config> 
    <config id="2"> 
     <name>old name</name> 
     <category>old category</category> 
    </config> 
</root> 

//Load the XML file 
$xml = simplexml_load_file('PATH TO YOUR XML FILE'); 
//Update the values that you want to update 
foreach($xml->root->config as $configGroup) 
{ 
    //Set the $IdToUpdate variable with the Id of the group that you want to update. 
    if ($configGroup['id'] == $IdToUpdate) 
    { 
     $configGroup->name = $_POST['name' . $IdToUpdate];//Your html must have the proper input names. 
     break; 
    } 
} 

//Save the changes 
$xml->asXml('PATH TO YOUR XML FILE'); 

希望這有助於

+0

當然有很多幫助,雖然我想知道,如果我有多個標籤爲其他而不是隻有一個,我有3,每個都有一個定義的ID。 – user2235005 2013-05-13 01:04:11

+0

好的,我會嘗試用該示例更新我的答案 – juanreyesv 2013-05-13 01:09:37

+0

用您要求的示例更新我的答案。希望這可以幫助 – juanreyesv 2013-05-13 01:29:09

0

你可能想從這裏開始: http://www.php.net/manual/en/refs.xml.php

聽起來像是你需要做的幾件事情。 i)將xml解析爲對象或數組。

ii)找到你想要更新的元素。

iii)更新所述元素後,將xml寫回文件。

+0

嘿,尼克感謝您的回覆。我只想聲明我有一個列出所有創建對象的文件。然後在我的主文件中,我有一個代碼,它從XML文件中提取數據並對其進行良好排序。 – user2235005 2013-05-13 00:20:51

0

好回答我的問題是很容易的。如果你像我一樣,基本上PHP編程的新手就會發揮作用,並且這樣會變得非常棘手,或者至少對我來說。當您使用XML中的數據時,每個標籤實際上都會成爲一個數組。

<configure id="firstblock"> 
    <name>Name</name> 
    <category>Old</category> 
</configure> 
<configure id="second block"> 
    <name>Name2</name> 
    <category>New</category> 
</configure> 

請注意配置如何像數組一樣工作。

$xml = SimpleXML_load_file('location of xml file here'); 
$xml->configure[0]->color = $_POST['name1']; 
$xml->configure[0]->category = $_POST['category']; 
$xml->configure[1]->name =$_POST['name2']; 
$xml->configure[1]->category =$_POST['category2']; 
$xml->asXml('location of xml file here'); 
相關問題