通过 PL SQL 读取 XML(存储在 Long 变量中)
Posted
技术标签:
【中文标题】通过 PL SQL 读取 XML(存储在 Long 变量中)【英文标题】:Read XML (stored in Long Variable) through PL SQL 【发布时间】:2012-01-04 21:21:13 【问题描述】:我们使用的是 Oracle 11g2 数据库。我们在 Long 列/变量中有一些 xml 内容。
谁能帮我读取xml属性值?
例如。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE labels SYSTEM "label.dtd">
<labels _QUANTITY="1" _JOBNAME="LBL213685">
<label _FORMAT="XE_INSP_REQ_LBL.lwl">
<variable name= "L_DATE">04-JAN-2012</variable>
<variable name= "L_TIME">10:45:17</variable>
<variable name= "L_LPN">K01-4713BE</variable>
<variable name= "L_SUPPLIER">RECISION OIL, INC</variable>
</label>
</labels>
我们想读取 <variable name= "L_LPN">
旁边的值。需要以编程方式返回K01-4713BE
。
【问题讨论】:
不使用long,有没有考虑使用xmltype?这将为您提供内置功能,您不会将其存储为大字符串。 【参考方案1】:试试这个:
declare
v_parser Xmlparser.Parser;
v_doc XMLDOM.DOMDocument;
v_nl XMLDOM.DOMNodeList;
v_node XMLDOM.DOMNode;
v_your_xml LONG := '<?xml version="1.0" encoding="UTF-8" standalone="no"?>' ||
/*'<!DOCTYPE labels SYSTEM "label.dtd">*/
'<labels _QUANTITY="1" _JOBNAME="LBL213685">' ||
'<label _FORMAT="XE_INSP_REQ_LBL.lwl">' ||
'<variable name= "L_DATE">04-JAN-2012</variable>' ||
'<variable name= "L_TIME">10:45:17</variable>' ||
'<variable name= "L_LPN">K01-4713BE</variable>' ||
'<variable name= "L_SUPPLIER">RECISION OIL, INC</variable>' ||
'</label></labels>';
begin
v_parser := Xmlparser.newParser;
xmlparser.setValidationMode(v_parser, TRUE);
Xmlparser.parseBuffer(v_parser, v_your_xml);
v_doc := Xmlparser.getDocument(v_parser);
v_nl := xslprocessor.selectNodes(XMLDOM.makeNode(v_doc),
'/labels/label/variable[@name="L_LPN"]');
v_node := XMLDOM.getFirstChild(XMLDOM.item(v_nl, 0));
dbms_output.put_line(XMLDOM.getNodeValue(v_node));
end;
请注意,xslprocessor.selectNodes 函数有一个 XPath 选择器,因此您可以选择任何您想要的内容
【讨论】:
正确感谢回复以上是关于通过 PL SQL 读取 XML(存储在 Long 变量中)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 PL/SQL 中读取 Result 标头 XML 标记
如何将 PL/SQL 的输出(XML)存储在 oracle 表中