【发布时间】:2010-10-19 02:04:26
【问题描述】:
有人知道如何使用 PL/SQL 检索 <ZIPCODE> 和 <CITY> 的值吗?我在网上遵循了一个教程,但是,它可以检索元素名称,但不能检索它们的值。你们中的任何人都知道似乎是什么问题吗?我已经就此咨询过谷歌(互联网保密),但没有运气:(
<Zipcodes>
<mappings Record="4">
<STATE_ABBREVIATION>CA</STATE_ABBREVIATION>
<ZIPCODE>94301</ZIPCODE>
<CITY>Palo Alto</CITY>
</mappings>
</Zipcodes>
这是示例代码:
-- prints elements in a document
PROCEDURE printElements(doc DBMS_XMLDOM.DOMDocument) IS
nl DBMS_XMLDOM.DOMNodeList;
n DBMS_XMLDOM.DOMNode;
len number;
BEGIN
-- get all elements
nl := DBMS_XMLDOM.getElementsByTagName(doc, '*');
len := DBMS_XMLDOM.getLength(nl);
-- loop through elements
FOR i IN 0 .. len - 1 LOOP
n := DBMS_XMLDOM.item(nl, i);
testr := DBMS_XMLDOM.getNodeName(n) || ' ' || DBMS_XMLDOM.getNodeValue(n);
DBMS_OUTPUT.PUT_LINE (testr);
END LOOP;
DBMS_OUTPUT.PUT_LINE ('');
END printElements;
【问题讨论】:
-
我个人更喜欢使用 XMLType 并使用 Extract 函数通过 XPath 获取它们。例如
myxml.Extract('/Zipcodes/mappings/ZIPCODE/text()');- 一定比遍历 DOM 更简单。