<root> <fIElds> <a>foo</a> <b>bar</b> </fIElds></root>
我想把上面的内容变成这样:
<root> <fIElds> <a>foo</a> <c>baz</c> </fIElds></root>
我知道我可以像这样更新值:
SELECT UpdateXML(my_xml,'/root/fIElds/b/text()','baz') INTO my_xml_updated FROM DUAL;
结果是:
<root> <fIElds> <a>foo</a> <b>baz</b> </fIElds></root>
但是如何从< b>更新节点名称?到< c> (不影响节点的内容)?
解决方法 一种选择是使用 XMLTRANSFORM重命名节点.另见例如 Rename nodes with XSLT.withxmldata as (select xmltype('<root> <fIElds> <a>foo</a> <b>bar</b> </fIElds></root>') val from dual),stylesheet as (select '<?xml version="1.0"?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/transform"> <!-- IDentity transformation --> <xsl:template match="node()|@*"> <xsl:copy> <xsl:apply-templates select="node()|@*"/> </xsl:copy> </xsl:template> <!-- IDentity transformation overrIDden for element b --> <xsl:template match="b"> <xsl:element name="c"> <xsl:apply-templates select="node()|@*"/> </xsl:element> </xsl:template></xsl:stylesheet>' val from dual)select xmltransform(x.val,s.val) from xmldata x,stylesheet s;
输出:
XMLtransform(X.VAL,S.VAL)--------------------------------------------------------------------------------<root> <fIElds> <a>foo</a> <c>bar</c> </fIElds></root>总结
以上是内存溢出为你收集整理的如何重命名Oracle XMLTYPE节点全部内容,希望文章能够帮你解决如何重命名Oracle XMLTYPE节点所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)