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

Đầu ra XML từ MySQL

mysql lệnh có thể xuất ra XML trực tiếp, sử dụng - -xml tùy chọn này có sẵn ít nhất là trước MySql 4.1.

Tuy nhiên, điều này không cho phép bạn tùy chỉnh cấu trúc của đầu ra XML. Nó sẽ xuất ra một cái gì đó như thế này:

<?xml version="1.0"?>
<resultset statement="SELECT * FROM orders" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <row>
    <field name="emp_id">129</field>
    <field name="cust_id">107</field>
    <field name="region">Eastern</field>
  </row>
</resultset>

Và bạn muốn:

<?xml version="1.0"?>
<orders>
  <employee emp_id="129">
    <customer cust_id="107" region="Eastern"/>
  </employee>
</orders>

Việc chuyển đổi có thể được thực hiện với XSLT bằng cách sử dụng một tập lệnh như sau:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

  <xsl:output indent="yes"/>
  <xsl:strip-space elements="*"/>

  <xsl:template match="resultset">
    <orders>
      <xsl:apply-templates/>
    </orders>
  </xsl:template>

  <xsl:template match="row">
    <employee emp_id="{field[@name='emp_id']}">
      <customer
        cust_id="{field[@name='cust_id']}"
        region="{field[@name='region']}"/>
    </employee>
  </xsl:template>

</xsl:stylesheet>

Điều này rõ ràng là dài dòng hơn so với cú pháp MSSQL ngắn gọn, nhưng mặt khác, nó mạnh hơn rất nhiều và có thể thực hiện tất cả những điều mà trong MSSQL không thể thực hiện được.

Nếu bạn sử dụng bộ xử lý XSLT dòng lệnh như xsltproc hoặc saxon , bạn có thể chuyển đầu ra của mysql trực tiếp vào chương trình XSLT. Ví dụ:

mysql -e 'select * from table' -X database | xsltproc script.xsl -


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm TRIM của MySQL không ngắt dòng hoặc trả về xuống dòng?

  2. MySQL hoặc điều kiện

  3. Các câu lệnh được chuẩn bị sẵn trong MySQL với danh sách biến kích thước có thể thay đổi

  4. MySQL - Chọn ngày gần đây nhất trong số một số dấu thời gian có thể có?

  5. MySQL - GROUP BY với ORDER DESC không hoạt động