Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách nối các thẻ tương tự trong một tệp XML

Điều này có thể được thực hiện với xpath. Đây là một ví dụ với Simplexml :

Trước tiên, bạn có thể tìm thấy tất cả các lá đầu tiên:

foreach ($xml->xpath('//*[not(*) and not(preceding-sibling::*)]') as $firstLeaf) {
    ...
}

và sau đó bạn nối văn bản với tất cả các lá sau:

    $followingWithSameName = 'following-sibling::*[name(.) = name(preceding-sibling::*[last()])]';
    // change the text of the first leaf
    $firstLeaf[0] = implode(', ', $firstLeaf->xpath(".|$followingWithSameName"));

và sau đó bạn loại bỏ tất cả các lá sau:

    // remove all following leafs with the same name
    foreach ($firstLeaf->xpath($followingWithSameName) as $leaf) {
        unset($leaf[0]);
    }

Demo




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sắp xếp các bản ghi SQL dựa trên các điều kiện phù hợp

  2. Luồng công việc DDL giao dịch cho MySQL

  3. Tham gia so với truy vấn phụ

  4. Sử dụng Python để truy cập SQL với tên cột biến

  5. MySQL từ số thập phân (13,6) sang tiền tệ