MYSQL存储过程中的XML解析

时间:2017-05-26 17:48:27

标签: mysql xml

我有一个xml,其节点名称以名称空间开头。这些名称空间不一致,可能会有所不同。如何在不对命名空间进行硬编码的情况下提取mysql存储过程中节点的值。

Ex XML:

<ns1:token>
   <ns2:id>12</ns2:id>
</ns1:token>

Ex mysql: 我能够在存储过程中读取'id'的值,如下所示

set id=ExtractValue(xml,'//ns1:token//ns2:id');

但是,我不希望ns1 / ns2被硬编码,因为它们可能预期不会一直相同。任何人都有任何想法吗?

1 个答案:

答案 0 :(得分:0)

目前还没有办法忽略MySQL XML函数中的命名空间。虽然ExtractValue的第二个参数是XPath字符串,但它不支持完整的XPath功能,因此//*:token//*:id//*[local-name()='token']//*[local-name()='id']之类的内容不起作用。

无论如何,命名空间与标记名称一样是XML的一部分。如果要进行正确的XML处理,则不应忽略命名空间。这并不是说你不希望标签名称被硬编码,因为它们不会一直保持不变。