我的XML看起来像这样。
<mapaDatosUsuario>
<item>
<campo>pair1</campo>
<valor>value1</valor>
</item>
<item>
<campo>pair2</campo>
<valor>value2</valor>
</item>
<item>
<campo>pair3</campo>
<valor>value3</valor>
</item>
<item>
<campo>pair4</campo>
<valor>value4</valor>
</item>
<item>
<campo>pair5</campo>
<valor>value5</valor>
</item>
<item>
<campo>pair6</campo>
<valor>value6</valor>
</item>
<item>
<campo>pair7</campo>
<valor>value7</valor>
</item>
<item>
<campo>pair8</campo>
<valor>value8</valor>
</item>
<item>
<campo>pair9</campo>
<valor>value9</valor>
</item>
<item>
<campo>pair10</campo>
<valor>value10</valor>
</item>
<item>
<campo>pair11</campo>
<valor>value11</valor>
</item>
<item>
<campo>pair12</campo>
<valor>value12</valor>
</item>
</mapaDatosUsuario>
<mapaDatosUsuario>
<item>
<campo>pair1</campo>
<valor>value1</valor>
</item>
<item>
<campo>pair2</campo>
<valor>value2</valor>
</item>
<item>
<campo>pair3</campo>
<valor>value3</valor>
</item>
<item>
<campo>pair4</campo>
<valor>value4</valor>
</item>
<item>
<campo>pair5</campo>
<valor>value5</valor>
</item>
<item>
<campo>pair6</campo>
<valor>value6</valor>
</item>
<item>
<campo>pair7</campo>
<valor>value7</valor>
</item>
<item>
<campo>pair8</campo>
<valor>value8</valor>
</item>
<item>
<campo>pair9</campo>
<valor>value9</valor>
</item>
<item>
<campo>pair10</campo>
<valor>value10</valor>
</item>
<item>
<campo>pair11</campo>
<valor>value11</valor>
</item>
<item>
<campo>pair12</campo>
<valor>value12</valor>
</item>
</mapaDatosUsuario>
我有一个表,我必须用列存储一些xml节点 pair1 pair3 pair5 pair6 pair7
但我只提取mapaDatosUsuario但我不知道如何提取剩下的值
我可以帮助我吗
提前致谢!!
答案 0 :(得分:1)
SELECT *
FROM XMLTABLE(
'//root/mapaDatosUsuario'
PASSING XMLTYPE( '<root>' || your_xml || '</root>' )
COLUMNS pair1 VARCHAR2(100) PATH './item/campo[text()="pair1"]/../valor/text()',
pair3 VARCHAR2(100) PATH './item/campo[text()="pair3"]/../valor/text()',
pair5 VARCHAR2(100) PATH './item/campo[text()="pair5"]/../valor/text()',
pair7 VARCHAR2(100) PATH './item/campo[text()="pair7"]/../valor/text()'
);
<强>输出强>:
PAIR1 PAIR3 PAIR5 PAIR7
---------- ---------- ---------- ----------
value1 value3 value5 value7
value1 value3 value5 value7
或者,获取XML节点:
SELECT *
FROM XMLTABLE(
'//root/mapaDatosUsuario'
PASSING XMLTYPE( '<root>' || your_xml || '</root>' )
COLUMNS pair1 XMLTYPE PATH './item/campo[text()="pair1"]/..',
pair3 XMLTYPE PATH './item/campo[text()="pair3"]/..',
pair5 XMLTYPE PATH './item/campo[text()="pair5"]/..',
pair7 XMLTYPE PATH './item/campo[text()="pair7"]/..'
);