2011-02-05 30 views
24

Tôi quyết định lưu cài đặt trong tệp xml vì trường chỉ nhận một giá trị.Một chương trình đơn giản cho giá trị nút và nút CRUD của tệp xml

tập tin XML của tôi là như

<?xml version="1.0" encoding="UTF-8"?> 
<setting> 
    <setting1>setting1 value</setting1> 
    <setting2>setting2 value</setting2> 
    <setting3>setting3 value</setting3> 
    .... 
    .... 
    .... 
</setting> 

bất cứ ai có thể gợi ý cho tôi một kịch bản php đơn giản để đọc, chỉnh sửa, thêm và xóa nút và nút giá trị?

Trả lời

23

Nếu XML của bạn thực sự đơn giản, bạn có thể sử dụng SimpleXML để CRUD. SimpleXml sẽ phân tích cú pháp XML thành một cấu trúc cây của SimpleXmlElements. Tóm lại, bạn sử dụng nó như thế này:

// CREATE 
$config = new SimpleXmlElement('<settings/>'); 
$config->setting1 = 'setting1 value';   
$config->saveXML('config.xml');    

// READ 
$config = new SimpleXmlElement('config.xml'); 
echo $config->setting1; 
echo $config->asXml(); 

// UPDATE 
$config->setting1 = 'new value'; 
$config->setting2 = 'setting2 value'; 
echo $config->asXml(); 

// DELETE 
unset($config->setting1); 
$config->setting2 = NULL; 
echo $config->asXML(); 
unlink('config.xml'); 

Vui lòng tham khảo hướng dẫn PHP để biết thêm usage examplesAPI description.

Trên một sidenote, nếu bạn thực sự chỉ có cặp khóa/giá trị bạn cũng có thể sử dụng một plain old PHP array để lưu trữ chúng hoặc một cửa hàng chủ chốt/giá trị như DBA hoặc thậm chí APCmemcached với ttl dài.

3

Bạn có thể sử dụng phần mở rộng PHP XQuery để thực hiện công việc:

let $data := <setting> 
    <setting1>setting1 value</setting1> 
    <setting2>setting2 value</setting2> 
    <setting3>setting3 value</setting3> 
</setting> 
return { 
    (: Update :) 
    replace value of node $data/setting1/text() with "Hello World"; 
    (: Delete :) 
    delete node $data/setting2; 
    (: Read :) 
    $data 
} 

Bạn có thể thử ví dụ trên sống ở http://www.zorba-xquery.com/html/demo#BJ2a2bNxJc8JVZAl0qyjAelwN9s=

hướng dẫn về cách cài đặt tiện ích XQuery PHP có sẵn tại http://www.zorba-xquery.com/html/entry/2011/12/27/PHP_Meets_XQuery

+1

+1: Phần mở rộng đó thực sự là đá. – hakre

Các vấn đề liên quan