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

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.

Cliff Morgan, Tác giả, 自由职业者

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.



07 03 2007 (Xuất bản lần đầu tiên vào ngày 22 01 2011)

Giới thiệu

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.

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>

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 đú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.


Đọ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.

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);
 $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> 
    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>
    <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);
  ?>

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> 
      <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.

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ệ

Thảo luận

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Ở lần bạn đăng nhập đầu tiên vào trang developerWorks, một hồ sơ cá nhân của bạn được tạo ra. Thông tin trong bản hồ sơ này (tên bạn, nước/vùng lãnh thổ, và tên cơ quan) sẽ được trưng ra cho mọi người và sẽ đi cùng các nội dung mà bạn đăng, trừ khi bạn chọn việc ẩn tên cơ quan của bạn. Bạn có thể cập nhật tài khoản trên trang IBM bất cứ khi nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=619072
ArticleTitle=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
publish-date=03072007