PLSQL

2017-05-23 10 views
0

内のノード内の単一のノード値は、ここでxmlですなさい:ここPLSQL

<root> 
    <error> 
    <description> 
     <code>I899</code> 
    </description> 
    <solution> 
     <code>AZE4</code> 
    </solution> 
    </error> 
    <error> 
    <description> 
     <code>I900</code> 
    </description> 
    </error> 
</root> 

はコードです:

myParser := DBMS_XMLPARSER.newParser; 
ficContent := DBMS_XSLPROCESSOR.Read2Clob(directoryPasrau, crmNomfilename , '0'); 
DBMS_XMLPARSER.parseBuffer(myParser,ficContent); 
dom := DBMS_XMLPARSER.getDocument(myParser); 
rootElement := DBMS_XMLDOM.getDocumentElement(dom); 

nlErrors := DBMS_XSLPROCESSOR.selectNodes(DBMS_XMLDOM.makeNode(dom), '//' || rootName || '/error', 'xmlns:ns2="http://www.gip-mds.fr/"'); 

私が2つのエラーノード

を取得結構です、ここティル
FOR i IN 0 .. DBMS_XMLDOM.getLength(nlErrors) - 1 LOOP 
    tabBisInfosList.EXTEND; 
    tabBisInfosList(i+1).descriptionCode := TRIM(TRANSLATE(TRANSLATE(DBMS_XMLDOM.getNodeValue(DBMS_XSLPROCESSOR.selectSingleNode(DBMS_XMLDOM.Item(nlAnomalies, i), 'description/code')), chr(10), ' '), chr(9), ' ')); 
END LOOP; 

tabBisInfosList(i + 1).descriptionCodeには何もありません。

同じ、私はこれらのパターンを使用する場合: 「/説明/コード」または「//説明/コード」を

あなたはなぜ知っていますか?ここ

のTy

答えて

0

2つのエラー:それはないです './description/code'

  • TRIM(TRANSLATE XPath式はこの1つをする必要があります

    1. (TRANSLATE(DBMS_XMLDOM.getNodeValue(DBMS_XSLPROCESSOR.selectSingleNode(DBMS_XMLDOM.Item(nlAnomalies、i)、 'description/code'))、chr(10)、 '')、chr(9)、 ''));

      しかし

      TRIM(TRANSLATE(TRANSLATE(DBMS_XMLDOM.getNodeValue(DBMS_XMLDOM.getFirstChild(DBMS_XSLPROCESSOR.selectSingleNode(DBMS_XMLDOM.Item(nlAnomalies、I)、 '記述/符号')))、CHR(10)、 '')、chr(9)、 ''));