10/10/2018, 10:45
Các bác cho em hỏi về XML
<items>
<item id="E1120" bin="AA21">Desk</item>
<item id="E1121" bin="FG03">Chair</item>
<item id="E1122" bin="CD00">Table</item>
</items>
em muốn viết code php xuất ra file XML như vậy thì làm sao, mong các bác chỉ giúp em, em mới tìm hiểu xml. Mong các bác giúp, thanks.
<item id="E1120" bin="AA21">Desk</item>
<item id="E1121" bin="FG03">Chair</item>
<item id="E1122" bin="CD00">Table</item>
</items>
em muốn viết code php xuất ra file XML như vậy thì làm sao, mong các bác chỉ giúp em, em mới tìm hiểu xml. Mong các bác giúp, thanks.
Bài liên quan
Xem thêm: http://ddth.com/showthread.php?t=397203
Tham khảo thử phần tạo feed trên trang blog của tớ. Feed là một file văn bản giới thiệu các thông tin mới từ 1 site nào đó và được thể hiện dưới dạng XML. Code bên dưới tớ đã giản lược đi, trong nguyên bản phức tạp hơn, trang của tớ trả về feed ở cả 2 dạng RSS và ATOM.
RSS 2.0 : http://sacroyant.uni.cc/blog/?output=rss
ATOM : http://sacroyant.uni.cc/blog/?output=atom
app.class.php là file chứa thông tin kết nối đến database và 1 số class do tớ xây dựng để xử lý các phần việc khác nhau. Sau khi chèn file này, tớ tạo 1 hiện thể $app. Phương thức getLastestWork trả về những bài mới nhất theo số lượng chỉ định trong tham số đầu tiên. Như vậy, bạn chỉ cần hiểu rằng :
$listWork=$app->getLastestWork(25,'feed');
sẽ đưa vào biến $listWork tối đa 25 mẩu tin. Đây là một array.
Sau 1 vài thiết lập đặc trưng cho feed, tớ dùng 1 vòng lặp for để quét qua mảng $listWork và nội dung feed chính thức được tạo ra sau vòng lặp này.
<?php
include "app.class.php";
$app = new SNLabs();
$output = trim($_GET***91;'output'***93;);
$url= 'http://sacroyant.uni.cc';
echo '<?xml version="1.0" encoding="UTF-8"?>'."\n";
if($output=='rss'){
?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
<title><?php echo $app->service;?></title>
<link><?php echo $url?></link>
<copyright>Copyright (c) 2008 SNLabs</copyright>
<author>Sacroyant Nguyen</author>
<contactEmail>sacroyant@gmail.com</contactEmail>
<lastBuildDate><?php echo (date("m/d/Y H:i:s ", $app->getGMTTime()).' GMT');?></lastBuildDate>
<?php
}
$listWork=$app->getLastestWork(25,'feed');
if(count($listWork)>0){
for($i=0;$i<count($listWork);$i++){
$ID=$listWork***91;$i***93;->id;
$title=$app->htmlEnc($listWork***91;$i***93;->title);
$cate=$listWork***91;$i***93;->category;
$auth=$listWork***91;$i***93;->author;
$summary=$app->htmlEnc($app->output($listWork***91;$i***93;->content,70));
$content=$app->output($listWork***91;$i***93;->content,70);
$pubDate=date("m/d/Y H:i:s ",$listWork***91;$i***93;->date).' GMT';
?>
<item>
<title><?php echo $title;?></title>
<link><?php echo $url;?>/?action=display&entry=<?php echo $ID;?></link>
<dc:creator><?php echo $auth;?></dc:creator>
<category><?php echo $cate;?></category>
<description><?php echo $summary;?></description>
<content:encoded><!***91;CDATA***91;<?php echo $content;?>***93;***93;></content:encoded>
<pubDate><?php echo $pubDate;?></pubDate>
</item>
<?php
}
}
?>
<category>
<name id="12" wpid="234">test</name>
<chaoban id="12" wpid="234">test</chaoban>
<title id="12" wpid="234">test</title>
...
</category>
Mong các bác giúp đỡ, Thanks.
<category>
<name id="12" wpid="234">test</name>
<chaoban id="12" wpid="234">test</chaoban>
<title id="12" wpid="234">test</title>
...
</category>
Giả sử mảng của bạn là arrCategories, nó sẽ bao gồm nhiều phần tử, mỗi phần tử là 1 đơn vị cơ bản trong đó chứa các thông tin name, chaoban, title. Bạn có thể dựng 1 class và biến mỗi phần tử này thành 1 đối tượng riêng biệt với các thuộc tính name, chaoban, title. Đến lượt các thuộc tính này, bạn lại phân chia thuộc tính nội tại của chúng ra làm 3 : id, wpid và content chẳng hạn.
Sau tất cả, bạn duyệt qua mảng arrCategories và hiển thị những thông tin truy xuất được sao cho phù hợp syntax XML.
xin phép chủ topic cho tớ Off topic tí nhé , Trình soạn thảo của bác sacroyant giống cái đang sài trên jsbin.com nhỉ , và cũng bị mấy vấn đề của nó:
- Tab thì ok, nhưng back space thì lại ko phải ngược của Tab
- auto indent cũng gặp vấn đề (thường open và close tag bị lệch nhau)
Cảm ơn sự góp ý của bác. Sắp tới tôi sẽ dành thời gian nghiên cứu để làm cho WebjEdit trở nên hoàn thiện hơn. Bác có thể theo dõi các cập nhật tại đây.
Trước khi xây dựng WebjEdit, tôi đã tham khảo nhiều trình soạn thảo web-based, chính cái menu lệnh Libraries là tôi học từ thằng jsbin đấy. Tiếc rằng sau khi làm xong sơ bộ cái Local Database và chế độ offline, tôi bận quá nên phải gác lại.
Xét từ quan điểm cá nhân tôi hướng đến tính thẩm mỹ, sự tiện lợi đơn giản và khả năng làm việc hiệu quả thì WebjEdit có vẻ hoàn hảo hơn so với nhiều trình soạn thảo source code nền web nổi tiếng thế giới hiện nay như MDK-Editor, Ecoder, Codepress, CodeTextArea... Riêng Bespin của Mozilla hiện đổi tên thành Mozilla Skywriter lại càng chưa thể so sánh được với WebjEdit.
Ngoài 1 vài lỗi nhỏ như bác đã nhắc đến, tôi cũng muốn áp dụng một database trên server nữa để có thể làm việc lưu động. Thêm vào đó 1 cấu trúc phân quyền sử dụng và 1 cơ chế đồng bộ giữa server database và local database là có thể xem như thành công.
Mong bác dành thời gian theo dõi tiến độ và góp ý cho