【问题标题】:How to LOAD XML in MySQL with self-closing tags?如何在 MySQL 中使用自闭合标签加载 XML?
【发布时间】:2014-08-21 10:20:04
【问题描述】:

我正在尝试将一些 XML 加载到 MySQL 数据库,但遇到了自关闭标签的问题。一个示例 SQL 来演示我的问题:

CREATE TEMPORARY TABLE `person` (
    `name` VARCHAR(75)
);

CREATE TEMPORARY TABLE `individual` LIKE `person`;

LOAD XML INFILE 'document.xml'
    INTO TABLE `individual`
    ROWS IDENTIFIED BY '<individual>';

LOAD XML INFILE 'document.xml'
    INTO TABLE `person`
    ROWS IDENTIFIED BY '<person>';

当自闭合标签后跟带有开始和结束标签的元素时,加载按预期工作:

<?xml version="1.0"?>
<document>
    <individual name="John Smith"></individual>
    <person name="Joe Doe" />
    <person name="Jane Doe" />
</document>


SELECT * FROM `individual`;
+------------+
| name       |
+------------+
| John Smith |
+------------+
1 row in set
SELECT * FROM `person`;
+----------+
| name     |
+----------+
| Joe Doe  |
| Jane Doe |
+----------+
2 rows in set

但是在一个元素用自闭标签表示之后,下面的就不会加载了:

<?xml version="1.0"?>
<document>
  <individual name="John Smith" />
  <person name="Joe Doe" />
  <person name="Jane Doe" />
</document>


SELECT * FROM `individual`;
+------------+
| name       |
+------------+
| John Smith |
+------------+
1 row in set
SELECT * FROM `person`;
Empty set

如何将具有多个自闭合标签的 XML 文件加载到 MySQL 中?

【问题讨论】:

    标签: mysql xml


    【解决方案1】:

    这似乎是一个错误,您可以将它报告给MySQL Bugs

    作为一种可能的解决方法,您可以生成如下所示的 XML:

    <?xml version="1.0"?>
    <document>
      <table>
        <individual name="John Smith" />
      </table>
      <table>
        <person name="Joe Doe" />
        <person name="Jane Doe" />
      </table>
    </document>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 2014-06-30
      相关资源
      最近更新 更多