Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Thiết kế web giá rẻ
    • Thiết kế website WordPress
    • Hosting Miễn Phí 100GB
    • Tích hợp thanh toán MoMo, ViettelPay, Vietcombank, MB..
    • Tối ưu Google PageSpeed
    • Sửa lỗi nâng cấp website
    • Viết plugin WordPress
    • Code Tool theo yêu cầu
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Programming » PHP » Đọc nội dung File XML trong PHP – Sử lý dữ liệu XML

Đọc nội dung File XML trong PHP – Sử lý dữ liệu XML

Chủ Nhật, 05/10/2014 by Hoàng Quách

  • shares
  • Facebook
  • 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.
đọc xml trong php
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
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Chuyên mục: PHP Tìm kiếm: read xml, xml php

Tôi giúp gì cho bạn?

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 – 0868 292 303 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • GitHub
  • YouTube

SẢN PHẨM

  • Plugin Thanh Toán Quét Mã QR Code Tự Động
  • WP2Speed – Tối ưu Google Speed
  • 23WebHost – Hosting Miễn Phí 100GB

LIÊN KẾT

  • Có nên thuê thiết kế website giá rẻ?
  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2023 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.