1

我们使用的是 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编程方式返回。

4

1 回答 1

2

试试这个:

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 选择器,因此您可以选择任何您想要的

于 2012-01-05T07:52:41.477 回答