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;
答案 0 :(得分:0)
MySQL目前只有非常基本的XML处理函数。正如ExtractValue(xml_frag, xpath_expr)
所述:
重要
ExtractValue()
仅返回CDATA
,并且不返回任何可能包含在匹配标记中的标记,也不返回任何内容(请参阅以下val1
返回的结果例子)。
您可以改为安装合适的UDF,例如MyXML。