PDF:

XML dành cho các nhà phát triển PHP, Phần 1: Khởi
động PHP-với-XML trong 15 phút
Tìm hiểu PHP5 đã cải thiện rất nhiều cách bạn làm việc với XML bằng
PHP như thế nào
Cliff Morgan
Tác giả
自由职业者
07 03 2007
(Xuất bản lần đầu tiên vào ngày 22 01
2011)
Bài viết đầu tiên của loạt bài ba phần giới thiệu cách triển khai thực hiện XML của PHP5 và giúp
cho những người còn mới lạ với việc sử dụng XML với PHP để đọc, phân tích cú pháp và thao
tác để viết ra một tệp tin XML ngắn và không phức tạp bằng cách sử dụng DOM và SimpleXML
trong môi trường PHP.
Xem thêm bài trong loạt bài này
Giới thiệu
Các bài khác trong loạt bài này
• XML dành cho các nhà phát triển PHP, Phần 2: Các kỹ thuật phân tích cú pháp XML
nâng cao
• XML dành cho các nhà phát triển PHP, Phần 3: Các kỹ thuật nâng cao để đọc, thao
tác, và viết XML
Thật khó bỏ qua tầm quan trọng của XML trong môi trường phát triển ứng dụng ngày nay. Nếu
trước đây bạn chưa bao giờ làm việc với XML bằng PHP hoặc chưa từng nhảy vào PHP5, hướng dẫn
khởi động này về làm việc với chức năng mới có sẵn trong PHP5 dành cho XML có thể sẽ thuyết
phục được bạn rằng làm việc với XML có thể dễ dàng như thế nào. Bài viết đầu tiên này trong loạt
bài ba phần, tập trung vào các API khởi động nhanh, trình bày cách mà SimpleXML, kết hợp với
DOM khi cần thiết, sẽ là sự lựa chọn lý tưởng đối với các nhà phát triển làm việc với các tài liệu XML
tương đối nhỏ, không phức tạp và có thể đoán trước được. Các tài liệu này chính xác là loại tài liệu
mà các ứng dụng Ajax chuyển giao, có chứa chẳng hạn như nội dung của một biểu mẫu trình lên
hoặc có thể là đáp ứng của một giao diện lập trình ứng dụng (API) dịch vụ Web như weather.com.
Cơ bản về XML
Một số nền tảng về XML sẽ cho phép bạn hiểu được tầm quan trọng của nó đối với nhà phát triển
PHP và cho phép bạn hiểu và tạo ra các tài liệu XML không phức tạp.
© Copyright IBM Corporation 2011
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Nhẫn hiệu đăng ký
Trang 1 của 14
developerWorks®
ibm.com/developerWorks/vn/
Về XML
Ngôn ngữ đánh dấu mở rộng (XML) được mô tả như vừa như là một ngôn ngữ đánh dấu và vừa
như là một định dạng lưu trữ dữ liệu dựa trên văn bản, tùy thuộc vào bạn nói chuyện với ai. Nó là
một tập hợp con của Ngôn ngữ đánh dấu tổng quát chuẩn (SGML- Standard Generalized Markup
Language); nó cung cấp một phương tiện dựa trên văn bản để áp dụng và mô tả một cấu trúc hình
cây cho thông tin. XML phục vụ làm cơ sở cho một số ngôn ngữ/định dạng như Trình tự động cập
nhật tệp tin (RSS-Really Simple Syndication), Ngôn ngữ giao diện người dùng XML (XUL - XML
User Interface Language) của Mozilla, Ngôn ngữ đánh dấu trải nghiệm tối đa (MXML - Maximum
eXperience Markup Language) của Macromedia, Ngôn ngữ đánh dấu ứng dụng Mở rộng được
(XAML - eXtensible Application Markup Language) của Microsoft và Ngôn ngữ đánh dấu giao diện
người dùng Java XML (XAMJ - Java XML UI Markup Language) mã nguồn mở. Nhiều hương vị
XML khác nhau như trên chứng tỏ XML có một tầm quan trọng lớn lao. Ai cũng muốn trèo lên toa
xe treo băng rôn XML này.
Viết XML
Đơn vị dữ liệu cơ sở của XML là phần tử. Các phần tử được phân định bằng một thẻ bắt đầu, chẳng
hạn như <book>, và một thẻ kết thúc, chẳng hạn như </book>. Nếu bạn có một thẻ bắt đầu, bạn
phải có một thẻ kết thúc. Nếu bạn không có một thẻ kết thúc ứng với mỗi thẻ bắt đầu, tài liệu XML
của bạn không đúng khuôn dạng (not well-formed), và các bộ phân tích cú pháp sẽ không phân tích
đúng được tài liệu này. Các thẻ thường được đặt tên để phản ánh kiểu nội dung chứa trong phần
tử đó. Bạn có thể mong đợi một phần tử có tên là “sách” sẽ chứa một tiêu đề sách, chẳng hạn như
Great American Novel (xem Liệt kê 1). Nội dung giữa các thẻ, gồm cả các khoảng trống, được coi là
dữ liệu ký tự.
Liệt kê 1. Một mẫu tài liệu XML
<books>
<book>
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 2 của 14
ibm.com/developerWorks/vn/
developerWorks®
Các tên phần tử XML và tên thuộc tính có thể bao gồm các chữ hoa từ A đến Z, chữ thường từ a
đến z, các số 0 đến 9, một số ký tự đặc biệt và ký tự không phải là tiếng Anh, và ba dấu chính tả,
dấu gạch nối, gạch dưới, và dấu chấm. Các dấu khác không được phép có trong các tên.
XML là loại nhạy kiểu chữ. Trong thí dụ này, <Book> và <book> mô tả hai phần tử khác nhau. Cả
hai đều là tên phần tử chấp nhận được. Có lẽ không phải là một ý kiến hay khi dùng <Book> và
<book> để mô tả hai phần tử khác nhau vì khả năng xảy ra lỗi văn thư có vẻ cao.
Mỗi tài liệu XML đều chứa một và chỉ một phần tử gốc. Phần tử gốc là phần tử duy nhất trong một
tài liệu XML mà không có phần tử cha. Trong thí dụ trên, phần tử gốc là <books>. Hầu hết tài liệu
XML nào cũng chứa các phần tử cha và phần tử con. Phần tử <book> có các phần tử con là <title>,
<characters>, <plot>, và <success>. Phần tử <characters> có ba phần tử con, mỗi phần tử trong
số đó là một phần tử <character>. Mỗi phần tử <character> lại có hai phần tử con, <name> và
<desc>.
Ngoài việc lồng các phần tử tạo ra các mối quan hệ cha-con, các phần tử XML cũng có thể có các
thuộc tính. Các thuộc tính là các cặp tên-giá trị gắn vào thẻ bắt đầu của một phần tử. Tên được
phân cách với giá trị bằng một dấu bằng, =. Các giá trị được bọc trong cặp dấu nháy đơn hoặc nháy
kép. Trong Liệt kê 1 trên đây, phần tử <success> có hai thuộc tính, "bestseller" và "bookclubs". Có
các trường phái khác nhau giữa các nhà phát triển XML về việc sử dụng thuộc tính. Hầu hết thông
tin chứa trong một thuộc tính có thể chứa trong một phần tử con. Một số nhà phát triển cứ khăng
khăng là thông tin thuộc tính phải là siêu dữ liệu, nghĩa là thông tin về dữ liệu, chứ không phải là
bản thân dữ liệu. Bản thân dữ liệu cần được chứa trong các phần tử. Việc lựa chọn có sử dụng thuộc
tính hay không thực ra phụ thuộc vào bản chất của dữ liệu và cách dữ liệu sẽ được tách ra ra từ
XML như thế nào.
Các điểm mạnh của XML
Một trong các phẩm chất tốt của XML là tính tương đối đơn giản của nó. Bạn có thể viết XML bằng
các bộ soạn thảo văn bản và xử lý văn bản cơ sở, không yêu cầu các công cụ hoặc phần mềm đặc
biệt. Cú pháp XML cơ bản cho XML gồm các phần tử lồng vào nhau, một số trong đó có các thuộc
tính và nội dung. Một phần tử thường bao gồm hai thẻ, một thẻ bắt đầu và một thẻ kết thúc, mỗi
thẻ nằm trong các dấu ngoặc góc dạng <tag > và < /tag >. XML có tính nhạy kiểu chữ và không
bỏ qua dấu cách. Nó trông khá giống với HTML, quen thuộc với nhiều người, tuy nhiên không như
HTML, nó cho phép bạn đặt tên các thẻ của bạn để mô tả tốt nhất dữ liệu của bạn. Một số ưu thế
của XML là định dạng tự chú giải, thân thiện con người, máy có thể đọc được của nó; sự hỗ trợ của
nó đối với Unicode, cho phép quốc tế hoá hỗ trợ ngôn ngữ của con người, và các yêu cầu về cú
pháp và phân tích cú pháp chặt chẽ của nó. Không may là UTF-8 có vấn đề trong PHP5; khiếm
khuyết này là một trong những sức mạnh thúc đẩy sự phát triển của PHP6.
Các điểm yếu của XML
XML là dài dòng và dư thừa, với các hậu quả kèm theo là phải lưu trữ lớn và tiêu thụ băng thông
lớn. Con người được giả định là đọc được nó, nhưng khó mà hình dung được một người nào cố đọc
một tệp tin XML với 7 triệu nút. Chức năng phân tích cú pháp cơ bản nhất không hỗ trợ một mảng
rộng các kiểu dữ liệu; do đó, dữ liệu không chính quy hoặc bất thường, mà rất phổ biến, là nguồn
gốc khó khăn chính.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 3 của 14
developerWorks®
ibm.com/developerWorks/vn/
XML đúng khuôn dạng
Một tài liệu XML là đúng khuôn dạng nếu nó tuân theo tất cả các quy tắc cú pháp của XML. Nếu
một tài liệu không đúng khuôn dạng, về ý nghĩa kỹ thuật nó không phải là XML. Một thẻ HTML
chẳng hạn như <br> là không thể chấp nhận được trong XML; thẻ này phải được viết là <br /> để là
XML đúng khuôn dạng. Một bộ phân tích cú pháp sẽ không phân tích XML chính xác nếu nó không
đúng khuôn dạng. Ngoài ra, một tài liệu XML phải có một và chỉ một phần tử gốc. Hãy nghĩ một
phần tử gốc cũng giống như một tủ hồ sơ vô tận. Bạn có một tủ hồ sơ, nhưng có một vài hạn chế về
việc bạn có thể nhồi cái gì và bao nhiêu vào tủ hồ sơ. Có nhiều vô kể các ngăn kéo và bìa cặp tài
liệu mà bạn có thể nhồi nhét thông tin vào đó.
Cơ bản về PHP
Hầu hết các độc giả của bài viết này trước đó đã làm việc với PHP, nhưng có thể không hiểu hết
được lịch sử và sự phát triển của nó.
Về PHP
Bộ tiền xử lý siêu văn bản (PHP- Hypertext Preprocessor) là ngôn ngữ kịch bản lệnh nhiều nền tảng
dùng để biên soạn các trang Web động và phần mềm ứng dụng phía máy chủ. Nó đã bắt đầu như
là Trình thông dịch trang chủ cá nhân / biểu mẫu (PHP/FI - Personal Home Page/Form Interpreter),
và đã bắt đầu một cuộc đời mới dưới bàn tay của Suraski và Gutmans, những người đã khởi phóng
PHP3 vào tháng 6/1998. Công ty của họ, Zend Technologies, vẫn đang quản lý sự phát triển của
PHP.
PHP5 phát hành vào tháng 7/2004, được Zend Engine II hỗ trợ và gồm nhiều tính năng mới như:
• Hỗ trợ mới cho việc lập trình hướng đối tượng
• Hỗ trợ tốt hơn cho MySQL
• Hỗ trợ tốt hơn cho XML, điều mà bạn đang quan tâm đến
PHP5 và XML
Mặc dù PHP cung cấp hỗ trợ XML từ các phiên bản đầu tiên, hỗ trợ đó đã cải thiện theo cấp số
nhân với việc đưa ra PHP5. Do hỗ trợ của PHP4 cho XML hơi bị hạn chế, chẳng hạn như chỉ đưa ra
một bộ phân tích dựa trên SAX được kích hoạt theo mặc định và DOM của PHP4 không thực hiện
tiêu chuẩn W3C, các nhà phát triển PHP XML đã phát minh lại cái bánh xe, có thể nói như vậy, với
PHP5 và đã theo đúng các tiêu chuẩn thông dụng.
Những cái mới dành cho XML trong PHP5
PHP5 bao gồm các mở rộng được viết lại và mới hoàn toàn, gồm bộ phân tích SAX, DOM,
SimpleXML, XMLReader, XMLWriter, và bộ xử lý XSLT. Tất cả các phần mở rộng này hiện nay đều
dựa trên libxml2.
Cùng với sự hỗ trợ SAX được cải thiện từ PHP4, PHP5 cũng hỗ trợ cả DOM theo chuẩn W3C và
cả phần mở rộng SimpleXML. SAX, DOM, và SimpleXML tất cả đều được kích hoạt theo mặc định.
Nếu bạn đã quen thuộc với DOM từ các ngôn ngữ khác, bạn sẽ viết mã dễ dàng với các chức năng
tương tự trong PHP hơn trước đây.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 4 của 14
ibm.com/developerWorks/vn/
developerWorks®
Đọc, thao tác và viết XML bằng PHP5
SimpleXML, kết hợp với DOM khi cần thiết, là sự lựa chọn lý tưởng cho các nhà phát triển làm việc
với các tài liệu XML tương đối nhỏ. không phức tạp, có thể đoán trước được để đọc, thao tác và viết
XML bằng PHP5.
Các API khởi động nhanh đáng để lựa chọn
Trong số nhiều API sẵn có trong PHP5, DOM và SimpleXML là thứ quen thuộc nhất, trong trường
hợp của DOM, và thứ dễ mã hoá nhất, trong trường hợp của SimpleXML. Và đối với các tình huống
càng phổ biến nhất, như các tình huống mà bạn đang xử lý ở đây, nó càng hoạt động tốt nhất.
Phần mở rộng về DOM
Mô hình đối tượng tài liệu (DOM) là một bộ chuẩn W3C của các đối tượng để biểu diễn các tài liệu
HTML và XML, một mô hình chuẩn về cách bạn có thể kết hợp các đối tượng này, và một giao diện
chuẩn để truy cập và thao tác chúng. Nhiều nhà cung cấp hỗ trợ DOM như là một giao diện cho
các cấu trúc dữ liệu độc quyền và API của họ, mang lại cho mô hình DOM nhiều quyền lực với các
nhà phát triển do tính quen thuộc của nó. DOM dễ hiểu và dễ sử dụng do cấu trúc của nó trong bộ
nhớ giống như tài liệu XML gốc. Để chuyển thông tin cho ứng dụng, DOM tạo ra một cây các đối
tượng mà sao lại chính xác cây các phần tử từ tệp tin XML, với phần tử XML nào cũng là một nút
của cây. DOM là một bộ phân tích cú pháp dựa trên cây. Do DOM xây dựng nên một cây của toàn
bộ tài liệu, nó sử dụng nhiều bộ nhớ và thời gian xử lý. Do đó, các vấn đề về hiệu năng làm cho việc
phân tích các tài liệu lớn bằng DOM là không có tính thực tiễn. Sử dụng chủ yếu của phần mở rộng
về DOM trong khuôn khổ bài viết này là khả năng nhập khẩu định dạng SimpleXML và xuất ra XML
định dạng DOM, hoặc ngược lại, để sử dụng như một chuỗi ký tự hoặc tệp tin XML.
SimpleXML
Phần mở rộng về SimpleXML là công cụ đáng lựa chọn để phân tích một tài liệu XML. Phần mở
rộng SimpleXML đòi hỏi phải có PHP5 và gồm cả tính liên tác với DOM để viết ra các tệp tin XML
và hỗ trợ XPath dựng sẵn. SimpleXML làm việc tốt nhất với dữ liệu không phức tạp, giống như bản
ghi, chẳng hạn như XML được chuyển giao như một tài liệu hay chuỗi ký tự từ một bộ phận nội bộ
khác của cùng ứng dụng đó. Miễn là tài liệu XML không quá phức tạp, quá sâu, và nội dung không
hỗn tạp, SimpleXML dễ mã hoá hơn DOM, như tên của nó hàm ý. Nó cũng tin cậy hơn nếu bạn làm
việc với một cấu trúc tài liệu đã biết từ trước.
Các thí dụ khởi động nhanh
Đây là các thí dụ khởi động nhanh của bạn về cách làm việc với DOM và SimpleXML dành cho các
tệp tin XML nhỏ, không có điểm gì khác biệt.
DOM vào việc
DOM là đặc tả DOM của W3C mà bạn làm việc với nó trong một trình duyệt và thao tác nó với
JavaScript. Nó có cùng các phương thức, do đó bạn sẽ sử dụng các kỹ thuật mã hóa quen thuộc.
Liệt kê 2 minh họa việc sử dụng DOM để tạo ra một chuỗi XML và tài liệu XML, được định dạng để
bạn xem thuận tiện.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 5 của 14
developerWorks®
ibm.com/developerWorks/vn/
Liệt kê 2. Sử dụng DOM
<?php
//Creates XML string and XML document using the DOM
$dom = new DomDocument('1.0');
//add root - <books>
$books = $dom->appendChild($dom->createElement('books'));
//add <book> element to <books>
$book = $books->appendChild($dom->createElement('book'));
//add <title> element to <book>
$title = $book->appendChild($dom->createElement('title'));
//add <title> text node element to <title>
$title->appendChild(
$dom->createTextNode('Great American Novel'));
//generate xml
$dom->formatOutput = true; // set the formatOutput attribute of
// domDocument to true
// save XML as string or file
$test1 = $dom->saveXML(); // put string in test1
$dom->save('test1.xml'); // save as file
?>
Mã lệnh này tạo ra tệp tin đầu ra trong Liệt kê 3.
Liệt kê 3. Tệp tin đầu ra
<?xml version="1.0"?>
<books>
<book>
<title>Great American Novel</title>
</book>
</books>
Liệt kê 4 nhập khẩu một đối tượng SimpleXMLElement thành một đối tượng DOMElement, minh hoạ
cho tính liên tác của DOM và SimpleXML.
Liệt kê 4. Tính liên tác, Phần 1 - DOM nhập khẩu SimpleXML
<?php
$sxe = simplexml_load_string('<books><book><title>'.
'Great American Novel</title></book></books>');
if ($sxe === false) {
echo 'Error while parsing the document';
exit;
}
$dom_sxe = dom_import_simplexml($sxe);
if (!$dom_sxe) {
echo 'Error while converting XML';
exit;
}
$dom = new DOMDocument('1.0');
$dom_sxe = $dom->importNode($dom_sxe, true);
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 6 của 14
ibm.com/developerWorks/vn/
developerWorks®
$dom_sxe = $dom->appendChild($dom_sxe);
echo $dom->save('test2.xml');
?>
Hàm trong Liệt kê 5 nhận một nút của một tài liệu DOM và làm cho nó thành một nút SimpleXML.
Bạn sau đó có thể sử dụng đối tượng mới này như là một phần tử SimpleXML nguyên sinh. Nếu có
bất kỳ sai sót nào xảy ra, nó sẽ trả về FALSE.
Liệt kê 5. Tính liên tác, Phần 2 - SimpleXML nhập khẩu DOM
<?php
$dom = new domDocument;
$dom->loadXML('<books><book><title>Great American
Novel</title></book></books>');
if (!$dom) {
echo 'Error while parsing the document';
exit;
}
$s = simplexml_import_dom($dom);
echo $s->book[0]->title; // Great American Novel
?>
SimpleXML vào việc
Phần mở rộng SimpleXML là công cụ đáng lựa chọn để phân tích một tài liệu XML. Phần mở
rộng SimpleXML gồm việc liên tác với DOM để viết các tệp tin XML và hỗ trợ XPath dựng sẵn.
SimpleXML dễ mã hoá hơn DOM, như tên của nó hàm ý.
Đối với những ai có thể chưa quen với PHP, Liệt kê 6 định dạng một tệp tin kiểm thử XML, được
đưa vào thêm để bạn tiện dùng.
Liệt kê 6. Tệp tin kiểm thử XML tên là example.php, định dạng như một tệp PHP để
gồm thêm trong các mã mẫu dưới đây
<?php
$xmlstr = <<<XML
<books>
<book>
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 7 của 14
developerWorks®
ibm.com/developerWorks/vn/
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML;
?>
Trong một ứng dụng Ajax, bạn có thể cần trích xuất mã zip từ một tài liệu XML và truy vấn một cơ
sở dữ liệu. Liệt kê 7 trích xuất <plot> từ thí dụ bao hàm XML trực tiếp ở trên của bạn.
Liệt kê 7. Trích xuất nút – Thực hiện dễ dàng ra sao?
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
echo $xml->book[0]->plot; // "Cliff meets Lovely Woman. ..."
?>
Mặt khác, bạn có thể cần phải trích xuất một địa chỉ nhiều dòng. Khi nhiều cá thể của một phần tử
đang có mặt như là phần tử con của chỉ một phần tử cha, các kỹ thuật lặp bình thường được áp
dụng. Liệt kê 8 cho thấy chức năng này.
Liệt kê 8. Trích xuất các cá thể của một phần tử
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* For each <book> node, echo a separate <plot>. */
foreach ($xml->book as $book) {
echo $book->plot, '<br />';
}
?>
Ngoài việc đọc tên các phần tử và giá trị của chúng, SimpleXML cũng có thể truy cập các thuộc
tính phần tử. Trong Liệt kê 9, truy cập các thuộc tính của một phần tử đúng như bạn thực hiện đối
với các phần tử của một mảng.
Liệt kê 9. Giải thích việc truy cập SimpleXML đến các thuộc tính của một phần tử
<?php
//Input XML file repeated for your convenience
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<books>
<book>
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 8 của 14
ibm.com/developerWorks/vn/
developerWorks®
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML;
?>
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
/* Access the <success> nodes of the first book.
* Output the success indications, too. */
foreach ($xml->book[0]->success as $success) {
switch((string) $success['type']) {
// Get attributes as element indices
case 'bestseller':
echo $success, ' months on bestseller list';
break;
case 'bookclubs':
echo $success, ' bookclub listings';
break;
}
}
?>
Để so sánh một phần tử hoặc thuộc tính với một chuỗi ký tự hoặc chuyển nó vào một hàm mà đòi
hỏi một chuỗi, bạn phải ép kiểu nó thành một chuỗi ký tự, sử dụng thành tố ép kiểu (string). Nếu
không, theo mặc định, PHP sẽ xử lý các phần tử như là một đối tượng, như Liệt kê 10 đã giải thích.
Liệt kê 10. Gọi nó là một chuỗi hay sự mất mát
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
if ((string) $xml->book->title == 'Great American Novel') {
print 'My favorite book.';
}
htmlentities((string) $xml->book->title);
?>
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 9 của 14
developerWorks®
ibm.com/developerWorks/vn/
Dữ liệu trong SimpleXML không nhất thiết phải là hằng. Liệt kê 11 sẽ xuất ra một tài liệu XML mới,
trình bày dưới đây, giống như bản gốc, trừ việc XML mới sẽ đổi Cliff thành Big Cliff.
Liệt kê 11. Thay đổi nút văn bản bằng cách sử dụng SimpleXML
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<books>
<book>
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML;
?>
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$xml->book[0]->characters->character[0]->name = 'Big Cliff';
echo $xml->asXML();
?>
Kể từ PHP 5.1.3, SimpleXML đã có khả năng dễ dàng bổ sung các (phần tử) con và các thuộc tính.
Liệt kê 12 sẽ xuất ra một tài liệu XML dựa trên bản gốc nhưng có một nhân vật mới và bộ mô tả
mới.
Liệt kê 12. Bổ sung các (phần tử) con và nút văn bản bằng cách sử dụng
SimpleXML
<?php
$xmlstr = <<<XML
<?xml version='1.0' standalone='yes'?>
<books>
<book>
<title>Great American Novel</title>
<characters>
<character>
<name>Cliff</name>
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 10 của 14
ibm.com/developerWorks/vn/
developerWorks®
<desc>really great guy</desc>
</character>
<character>
<name>Lovely Woman</name>
<desc>matchless beauty</desc>
</character>
<character>
<name>Loyal Dog</name>
<desc>sleepy</desc>
</character>
<character>
<name>Yellow Cat</name>
<desc>aloof</desc>
</character>
</characters>
<plot>
Cliff meets Lovely Woman. Loyal Dog sleeps, but wakes up to bark
at mailman.
</plot>
<success type="bestseller">4</success>
<success type="bookclubs">9</success>
</book>
</books>
XML;
?>
<?php
include 'example.php';
$xml = new SimpleXMLElement($xmlstr);
$character = $xml->book[0]->characters->addChild('character');
$character->addChild('name', 'Yellow Cat');
$character->addChild('desc', 'aloof');
$success = $xml->book[0]->addChild('success', '2');
$success->addAttribute('type', 'reprints');
echo $xml->asXML();
?>
Tóm tắt
Bài đầu tiên trong loạt bài ba phần, tập trung vào các API khởi động nhanh, trình bày cách
SimpleXML, kết hợp với DOM như thế nào khi cần thiết, trở thành lựa chọn lý tưởng cho các nhà
phát triển làm việc với các tài liệu XML không phức tạp, có thể đoán trước được, và tương đối nhỏ.
PHP5 đã cải thiện rất nhiều khả năng làm việc với XML bằng PHP của nhà phát triển. Phần 2 sẽ tập
trung vào các kỹ thuật phân tích cú pháp XML nâng cao.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 11 của 14
developerWorks®
ibm.com/developerWorks/vn/
Tài nguyên
Học tập
• XML dành cho các nhà phát triển PHP, Phần 2: Các kỹ thuật phân tích cú pháp XML nâng
cao (Cliff Morgan, developerWorks, 03/2007): Trong Phần 2 của loạt bài ba phần này, hãy
khám phá các kỹ thuật phân tích cú pháp XML trong PHP5, và tìm hiểu cách quyết định
phương thức phân tích cú pháp nào là tốt nhất đối với ứng dụng của bạn.
• XML dành cho các nhà phát triển PHP, Phần 3: Các kỹ thuật nâng cao để đọc, thao tác và
viết XML (Cliff Morgan, developerWorks, 03/2007): Tìm hiểu nhiều hơn về các kỹ thuật để
đọc, thao tác và viết XML bằng PHP5 trong bài viết cuối cùng của loạt bài 3 phần về XML
dành cho các nhà phát triển PHP.
• Đọc và viết DOM XML bằng PHP (Jack Herrington, developerWorks, 12/2005): Đọc XML bằng
ba phương thức: thư viện DOM, bộ phân tích cú pháp SAX, và các biểu thức chính quy. Thêm
nữa, tìm hiểu cách viết XML bằng cách sử dụng DOM và khuôn mẫu văn bản PHP.
• Xử lý SimpleXML bằng PHP (Elliotte Rusty Harold, developerWorks, 10/2006): Thử phần mở
rộng SimpleXML và cho phép các trang PHP để truy vấn, tìm kiếm, sửa đổi, và tái bản XML.
• Hướng dẫn di trú tới PHP5 (Jack Herrington, developerWorks, 09/2006): Di trú mã phát triển
bằng PHP V4 đến V5 và cải thiện đáng kể khả năng bảo trì và tính ổn định mã của bạn.
• Đối với bài đầu tiên trong loạt bài ba phần về SimpleXML, hãy đọc Giới thiệu Simple XML
trong PHP5 ( Alejandro Gervasio, Dev Shed, 6/2006): Tiết kiệm công sức với các cơ sở của
phần mở rộng simplexml trong PHP 5, một thư viện mà chủ yếu tập trung vào việc phân tích
cú pháp các tệp tin XML đơn giản.
• PHP Cookbook, Second Edition ( Adam Trachtenberg and David Sklar, O'Reilly Media,
8/2006): Tìm hiểu cách xây dựng các ứng dụng Web động làm việc trên bất kỳ trình duyệt
Web nào.
• XML.com: Thăm trang web XML của O'Reilly để có sự bao quát toàn diện về thế giới XML.
• Thông tin W3C XML: Tìm hiểu đặc tả XML từ nguồn.
• Trang nhà phát triển PHP: Tìm hiểu nhiều hơn về ngôn ngữ kịch bản lệnh vạn năng được sử
dụng rộng rãi này, nó đặc biệt phù hợp để phát triển Web.
• Planet PHP": Xem nguồn tin tức về cộng đồng các nhà phát triển PHP.
• Chứng nhận XML của IBM: Tìm hiểu cách làm thế nào để bạn có thể trở thành một Nhà phát
triển được IBM chứng nhận về XML và công nghệ liên quan.
• Thư viện kỹ thuật XML: Xem vùng XML trên developerWorks để có nhiều bài viết và mách
nước về kỹ thuật, các hướng dẫn, tiêu chuẩn, và Sách đỏ của IBM.
• Các sự kiện và phát tin kỹ thuật trong developerWorks: Theo sát công nghệ trong các phiên
này.
Lấy sản phẩm và công nghệ
• Xem trang PEAR: Kho lưu trữ ứng dụng và phần mở rộng PHP: Nhận thêm thông tin về
PEAR, một hệ thống khung làm việc và phân phối cho các thành phần PHP tái sử dụng được.
• PECL: PHP Extension Community Library: Xem trang web chị em (trang tương tự nhau của
cùng một người – N.D.) của PEAR và kho lưu trữ các phần mở rộng PHP.
• xmllib2: Nhận về trình phân tích cú pháp XML bằng C và bộ công cụ bộ của Gnome.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 12 của 14
ibm.com/developerWorks/vn/
developerWorks®
• Phần mềm dùng thử của IBM: Lập dự án phát triển tiếp theo của bạn với phần mềm dùng thử
có sẵn để tải về trực tiếp từ developerWorks.
Thảo luận
• Các diễn đàn thảo luận trong vùng XML: Tham gia vào bất kỳ diễn đàn nào trong một số diễn
đàn xoay quanh XML.
• Các blog của developerWorks: Tham gia vào cộng đồng developerWorks.
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 13 của 14
developerWorks®
ibm.com/developerWorks/vn/
Đôi nét về tác giả
Cliff Morgan
Cliff Morgan là một nhà tư vấn độc lập, người thiết kế và thực hiện các ứng dụng Web
và các điểm Web.
© Copyright IBM Corporation 2011
(www.ibm.com/legal/copytrade.shtml)
Nhẫn hiệu đăng ký
(www.ibm.com/developerworks/vn/ibm/trademarks/)
XML dành cho các nhà phát triển PHP, Phần 1: Khởi động PHPvới-XML trong 15 phút
Trang 14 của 14