Mở rộng SimpleXML của PHP cung cấp một bộ công cụ rất đơn giản và dễ sử dụng để chuyển đổi XML thành một đối tượng có thể được xử lý bằng các bộ chọn thuộc tính bình thường và các bộ lặp mảng. Nó là một trình phân tích dựa trên cây, và hoạt động tốt với các tệp XML đơn giản, nhưng có thể gặp vấn đề khi làm việc với các tài liệu XML lớn và phức tạp.
Các hàm sau đây được định nghĩa trong phần mở rộng SimpleXML −
Hàm simplexml_load_file() diễn giải một tệp XML thành một đối tượng −
simplexml_load_file( string $filename, ?string $class_name = SimpleXMLElement::class, int $options = 0, string $namespace_or_prefix = "", bool $is_prefix = false ): SimpleXMLElement|false
Một tài liệu XML được định dạng đúng trong tệp đã cho được chuyển đổi thành một đối tượng.
Tham số filename là một chuỗi đại diện cho tệp XML sẽ được phân tích. class_name là tham số tùy chọn. Nó chỉ định lớp mà đối tượng của nó sẽ được trả về bởi hàm. Hàm trả về một đối tượng của lớp SimpleXMLElement với các thuộc tính chứa dữ liệu được lưu trong tài liệu XML, hoặc false trong trường hợp thất bại.
Hãy xem xét ví dụ sau −
<?php $xml = simplexml_load_file("test.xml") or die("Error: Cannot create object"); print_r($xml); ?>
Nó sẽ tạo ra output −
SimpleXMLElement Object ( [Course] => Android [Subject] => Android [Company] => TutorialsPoint [Price] => $10 )
Hàm simplexml_load_string() diễn giải một tệp XML thành một đối tượng.
simplexml_load_string( string $filename, ?string $class_name = SimpleXMLElement::class, int $options = 0, string $namespace_or_prefix = "", bool $is_prefix = false ): SimpleXMLElement|false
Một tài liệu XML được cấu trúc đúng trong chuỗi đã cho được chuyển đổi thành một đối tượng.
Tham số $data là một chuỗi đại diện cho tài liệu XML cần được phân tích. class_name là tham số tùy chọn. Nó chỉ định lớp mà đối tượng của nó sẽ được trả về bởi hàm. Hàm trả về một đối tượng của lớp SimpleXMLElement với các thuộc tính chứa dữ liệu có trong tài liệu XML, hoặc false nếu thất bại.
Hãy xem xét ví dụ sau −
<?php $data = "<?xml version = '1.0' encoding = 'UTF-8'?> <note> <Course>Android</Course> <Subject>Android</Subject> <Company>TutorialsPoint</Company> <Price>$10</Price> </note>"; $xml = simplexml_load_string($data) or die("Error: Cannot create object"); print_r($xml); ?>
Nó sẽ tạo ra output −
SimpleXMLElement Object ( [Course] => Android [Subject] => Android [Company] => TutorialsPoint [Price] => $10 )
Hàm simplexml_import_dom() tạo ra một đối tượng SimpleXMLElement từ một nút DOM.
simplexml_import_dom(SimpleXMLElement|DOMNode $node, ?string $class_name = SimpleXMLElement::class): ?SimpleXMLElement
Hàm này nhận một nút của tài liệu DOM và chuyển nó thành một nút SimpleXML. Đối tượng mới này sau đó có thể được sử dụng như một phần tử SimpleXML gốc.
Tham số node là một nút DOM Element. Tham số class_name tùy chọn có thể được cung cấp để simplexml_import_dom() trả về một đối tượng của lớp con được chỉ định của lớp SimpleXMLElement. Giá trị trả về bởi hàm này là một SimpleXMLElement hoặc null nếu không thành công.
Hãy xem xét ví dụ sau −
<?php $dom = new DOMDocument; $dom->loadXML('<books><book><title>PHP Handbook</title></book></books>'); if (!$dom) { echo 'Error while parsing the document'; exit; } $s = simplexml_import_dom($dom); echo $s->book[0]->title; ?>
Nó sẽ tạo ra output −
PHP Handbook
Đoạn mã sau đây cho thấy cách lấy giá trị nút từ tệp XML và tệp XML nên như sau −
<?xml version = "1.0" encoding = "utf-8"?> <tutorialspoint> <course category = "JAVA"> <title lang = "en">Java</title> <tutor>Gopal</tutor> <duration></duration> <price>$30</price> </course> <course category = "HADOOP"> <title lang = "en">Hadoop</title>. <tutor>Satish</tutor> <duration>3</duration> <price>$50</price> </course> <course category = "HTML"> <title lang = "en">html</title> <tutor>raju</tutor> <duration>5</duration> <price>$50</price> </course> <course category = "WEB"> <title lang = "en">Web Technologies</title> <tutor>Javed</tutor> <duration>10</duration> <price>$60</price> </course> </tutorialspoint>
Mã PHP nên như sau −
<?php $xml = simplexml_load_file("books.xml") or die("Error: Cannot create object"); foreach($xml->children() as $books) { echo $books->title . "<br> "; echo $books->tutor . "<br> "; echo $books->duration . "<br> "; echo $books->price . "<hr>"; } ?>
Nó sẽ tạo ra output −
Java Gopal $30 ________________________________________ Hadoop Satish 3 $50 ________________________________________ html raju 5 $50 ________________________________________ Web Technologies Javed 10 $60 ________________________________________