Đọc Nội Dung File XML Trong PHP - Sử Lý Dữ Liệu XML - Hoàng Web
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Tuy nhiên, simpleXML không thực sự tốt khi nội dung XML có nhiều Namespace Elements. Ví dụ trường hợp bạn muốn đọc RSS feed, trong feed có các thành phần XML Namespace. Xem ví dụ sau:
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <channel> .... <item> <title>My Title</title> <description>My Item</description> <dc:publisher>ABC</dc:publisher> <dc:creator>DEF</dc:creator> <dc:date>2009-02-12T16:53:25Z</dc:date> </item> ... </channel> </rss>Nạp nội dung XML từ file hoặc chuỗi có sẵn.
$feed = file_get_contents("http://linkto.my.feed"); $xml = new SimpleXmlElement($feed);Sử dụng hàm simplexml_load_string thay cho class SimpleXmlElement. Hàm này trả về instance đối tượng SimpleXmlElement.
$feed = file_get_contents("http://linkto.my.feed"); $xml = simplexml_load_string($feed);Hoặc có thể thay bằng simplexml_load_file
$xml = simplexml_load_file('http://linkto.my.feed');Nếu có biến chứa nội dung chuỗi XML.
$string = <<<XML <?xml version='1.0'?> <document> <title>Forty What?</title> <from>Joe</from> <to>Jane</to> <body> I know that's the answer -- but what's the question? </body> </document> XML; $xml = simplexml_load_string($string); //hoặc $xml=new SimpleXmlElement($string);Đọc các thẻ không khai báo namespace.
foreach ($xml->channel->item as $entry){ echo $entry->title; echo $entry->description; }Nhưng nếu bạn muốn truy cập thẻ có namespace, ví dụ dc:publisher hoặc dc:creator Áp dụng đoạn code đơn giản giống cách làm với element bình thường chắc sẽ không hoạt động.
//This doesn't work ... foreach ($xml->channel->item as $entry){ echo $entry->publisher; echo $entry->creator; ... }Code trên không bao giờ hoạt động, bởi vì thẻ publisher và creator thuộc các namespace khác nhau. Hãy nhìn trên khai báo namespace tại thẻ root.
.... xmlns:dc="http://purl.org/dc/elements/1.1/">Chúng ta hiểu rằng các elements có namespace sẽ được quản lý vào mỗi nhóm namespace của nó, thông qua địa chỉ namespace. trường hợp trong ví dụ trên là “http://purl.org/dc/elements/1.1”:
$feed = file_get_contents("http://linkto.my.feed"); $xml = new SimpleXmlElement($feed); foreach ($xml->channel->item as $entry){ echo $entry->title; echo $entry->description; //Use that namespace $dc = $entry->children(‘http://purl.org/dc/elements/1.1/’); echo $dc->publisher; echo $dc->creator; }Truyền địa chỉ namespace trực tiếp hoặc xác định bởi tên trong mảng trả về của hàm getNameSpaces chứa toàn bộ thông tin namespace có trong XML.
... foreach ($xml->channel->item as $entry){ ... //Use that namespace $namespaces = $entry->getNameSpaces(true); //Now we don't have the URL hard-coded $dc = $entry->children($namespaces['dc']); echo $dc->publisher; echo $dc->creator; }Mình có bài viết này trong điều kiện sửa lại attachment lỗi trong wordpress. Cảm ơn đã bạn đã sử dụng dịch vụ thiết kế website bên hoangweb.com.
Hãy cho mình biết suy nghĩ của bạn trong phần bình luận bên dưới bài viết này. Hãy theo dõi kênh chia sẻ kiến thức WordPress của Hoangweb trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Từ khóa » Xml Trong Php
-
Hướng Dẫn Thao Tác XML DOM Trong File PHP - NIIT - ICT Hà Nội
-
Tạo, Phân Tích Cú Pháp Ví Dụ Trong PHP XML
-
PHP: Đọc Dữ Liệu XML Trong PHP | V1Study
-
PHP & XML
-
Xử Lý File XML Trong PHP - TEK4
-
Thao Tác Với XML Trong PHP - Init HTML
-
PHP Và XML
-
Simple XML GET Trong PHP
-
Simple XML - PHP - Hoclaptrinh
-
PHP XML Tutorial: Create, Parse, Read With Example | Nền Tảng
-
Xử Lý XML Trong PHP5 Một Cách Nhanh Chóng Và Hiệu Quả
-
Các Hàm SimpleXML Trong PHP - Web Cơ Bản
-
Ví Dụ Về XML Trong PHP - Lib24.Vn
-
Hướng Dẫn Truy Xuất Dữ Liệu XML Bằng PHP