使用oracle解析器从XML获取First Occurred值
发布时间:2021-01-13 06:51:17 所属栏目:站长百科 来源:网络整理
导读:我不是Oracle的专家,但根据要求,我使用Oracle Parser解析Xml.对于下面列出的xml即 ?xml version="1.0" encoding="iso-8859-1" ?SearchOutputrowArray Row cellArray Cell columnId1/columnId valueArray Value valueIR000024575453/value /Value /valueArray
副标题[/!--empirenews.page--]
我不是Oracle的专家,但根据要求,我使用Oracle Parser解析Xml.对于下面列出的xml即 <?xml version="1.0" encoding="iso-8859-1" ?> <SearchOutput> <rowArray> <Row> <cellArray> <Cell> <columnId>1</columnId> <valueArray> <Value> <value>IR000024575453</value> </Value> </valueArray> </Cell> <Cell> <columnId>5</columnId> <valueArray> <Value> <value>AZ12604823-001</value> </Value> </valueArray> </Cell> <Cell> <columnId>2</columnId> <valueArray> <Value> <value>IT06686</value> </Value> </valueArray> </Cell> <Cell> <columnId>9</columnId> <valueArray> <Value> <value>Hu Mics Metab K</value> </Value> </valueArray> </Cell> <Cell> <columnId>8</columnId> <valueArray> <Value> <value>2006-06-21</value> </Value> </valueArray> </Cell> <Cell> <columnId>7</columnId> <valueArray> <Value> <value>2006-07-27</value> </Value> </valueArray> </Cell> </cellArray> </Row> </rowArray> </SearchOutput> 我使用过该方法,其中l_xmlclob具有CLOB数据类型并在上面分配了xml. FOR r IN ( SELECT rownum rn,cells FROM xmltable('/SearchOutput/rowArray/Row' passing XMLTYPE(l_xmlclob) columns CELLS XMLTYPE PATH './cellArray') ) LOOP DBMS_OUTPUT.PUT_LINE('Row: '||r.rn); FOR c IN ( SELECT colid,colval FROM xmltable('/cellArray/Cell' passing r.cells columns COLID NUMBER PATH './columnId',COLVAL VARCHAR(20) PATH './valueArray/Value/value') ) LOOP DBMS_OUTPUT.PUT_LINE('colid,col value: '||c.colid||','||c.colval); END LOOP; END LOOP; 它的工作正常,它的输出就像 Row: 1 colid,col value: 1,IR000024575453 colid,col value: 5,AZ12604823-001 colid,col value: 2,IT06686 colid,col value: 9,Hu Mics Metab K colid,col value: 8,2006-06-21 colid,col value: 7,2006-07-27 但是如果在xml中一个接一个地存在两个值并且我想仅选择第一个出现,即下面的xml,则会出现问题 <?xml version="1.0" encoding="iso-8859-1" ?> <SearchOutput> <rowArray> <Row> <cellArray> <Cell> <columnId>1</columnId> <valueArray> <Value> <value>Uganda</value> </Value> <Value> <value>Italy</value> </Value> </valueArray> </Cell> <Cell> <columnId>5</columnId> <valueArray> <Value> <value>AZ12604823-001</value> </Value> </valueArray> </Cell> <Cell> <columnId>2</columnId> <valueArray> <Value> <value>IT06686</value> </Value> </valueArray> </Cell> <Cell> <columnId>9</columnId> <valueArray> <Value> <value>Hu Mics Metab K</value> </Value> </valueArray> </Cell> <Cell> <columnId>8</columnId> <valueArray> <Value> <value>2006-06-21</value> </Value> </valueArray> </Cell> <Cell> <columnId>7</columnId> <valueArray> <Value> <value>2006-07-27</value> </Value> <Value> <value>2012-02-27</value> </Value> </valueArray> </Cell> </cellArray> </Row> </rowArray> </SearchOutput> (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |