0

このxmlファイルの場合:

<ROOT>
  <A>
    <B>2</B>
    <C>3</C>
    <D>
      <E>12</E>
    </D>
    <F/>
    <G/>
  </A> 
</ROOT>

値はあるが子がないBやCのようなノードの数を取得するにはどうすればよいですか?

この場合、数は2である必要があります。

4

1 に答える 1

0

必要な特定のノードがわかっている場合(ほとんどの場合)、ノードの選択にXPathを使用することをお勧めします(コーディングは少なくなります)。

この短いサンプルを考えてみましょう。

 set serveroutput on;
 declare
   XML CLOB;
   XML_DOCUMENT DBMS_XMLDOM.DOMDOCUMENT;
   XML_NODE DBMS_XMLDOM.DOMNODE;
 begin
   XML := '
   <ROOT>
     <A>
       <B>2</B>
       <C>3</C>
       <D>
         <E>12</E>
       </D>
       <F/>
       <G/>
     </A> 
   </ROOT>
   ';

   XML_DOCUMENT := DBMS_XMLDOM.NEWDOMDOCUMENT(XML);
   XML_NODE := DBMS_XMLDOM.MAKENODE(XML_DOCUMENT);
   XML_NODE := DBMS_XSLPROCESSOR.SELECTSINGLENODE(XML_NODE,'ROOT/A/B/text()');
   IF(DBMS_XMLDOM.ISNULL(XML_NODE) = FALSE)
   THEN
     dbms_output.put_line(DBMS_XMLDOM.GETNODEVALUE(XML_NODE));
   END IF;
 end;
于 2012-11-09T00:22:04.693 に答える