使用ExtractValue在XML字符串中获取节点名称?

时间:2014-01-10 21:53:37

标签: mysql xml stored-procedures xpath

MySQL是否可以在XML中获取节点名称?

我在存储过程中使用以下内容来迭代XML的节点,但是这样我只能获取值,而不是节点名称:

DECLARE i INT DEFAULT 1;
DECLARE nrows INT DEFAULT 1;
DECLARE rownum INT DEFAULT 1;
DECLARE vTag VARCHAR(100) DEFAULT '';
DECLARE returnvalue TEXT DEFAULT '';

DECLARE paramXML TEXT DEFAULT '<fields><a>1</a><b>2</b><c>3</c></fields>';

SET nrows = ExtractValue(paramXML, 'count(//fields/*)');
SET rownum = 1;

WHILE rownum <= nrows DO
  SET vTag= ExtractValue(paramXML, '//fields/*[$rownum]');

    SET returnvalue=CONCAT(returnvalue, vTag, ';');

  SET rownum = rownum + 1;
END WHILE;

SELECT returnvalue;

1 个答案:

答案 0 :(得分:0)

MySQL目前只有非常基本的XML处理函数。正如ExtractValue(xml_frag, xpath_expr)所述:

  

重要

     

ExtractValue()仅返回CDATA,并且不返回任何可能包含在匹配标记中的标记,也不返回任何内容(请参阅以下val1返回的结果例子)。

您可以改为安装合适的UDF,例如MyXML