How to detect missing xml node before using countNodes?

Below is my xml sample. Right now I use countNodes to count # of <Book> returned.
<ListOfBook>
<Book>A</Book>
<Book>B</Book>
<Book>C</Book>
</ListOfBook>
When there's no data, I got
</ListOfBook>
My countNodes() failed and generated errors. How do I avoid this? Can I detect if <Book> exists first before doing countNodes() and if so how?
I'm using SOA 11.1.1.2
Thanks

Actualy the simplest way to be certain your <ListOfBook> is empty is to check the first element:
If $ListOfBook/Book[1] != ''
If there aqre no Books - nothing happens.
About count nodes - it works. Pb=robably you have a mistake in countNodes definition (you can paste it here for commenting)

Similar Messages

  • How to Edit the xml node value using flex from the front end UI

    Hi All,
    I am having a use case with flex 4.6
    1> To read the external xml file
    2> Display the tree structure in the front end UI
    3> Edit the node values of the xml file from the front end UI and save it back
    How to go about the above use case, any blogs or links on the above case will be help
    Thanks,
    Alok

    Check this is example:
    http://blog.flexexamples.com/2009/07/23/deleting-nodes-from-an-xml-object-in-flex/

  • Custom Component : How to detect what charset the request used?

    I want to write a file upload component, this component must use the same charset as the request used to decode file name from data post from web browser, How to detect what charset the request used?

    Hi Eddie,
    As Arjit suggested, there are a bunch of functions available in WEBI like GetDominantPreferredViewingLocale(), GetLocale() and GetPreferredViewingLocale(), etc. that you could use.
    There are no such specific functions provided within Dashboards tool.
    So, you can create a WEBI report, and have one of these formulas specified in a variable in the webi report. Then, have the block published as a BIWS and use this BIWS in your dashboard.

  • How to binding incoming xml node list to the tree control as dataProvider

    Recently, I faced into one issue: I want to binding incoming xml node (it's not avaliable at start) list to the tree control as a dataProvider.
    Since the incoming xml node list is not avaliable at beginning but I needs to bind it to the tree, so I create one virtual one in the xml, and prepare to remove it before the tree is shown. (ready for the actual node adding). But It did not work.
    Please see the presudo-code here:
    1.  Model layer(CsModel.as)
    public class CsModel
            [Bindable]
            public var treeXML:XML=<nodes><car label="virtualOne" id="1">
                                   </car></nodes>;
            (Here, I want to build binding relationship on the <car/> node,
             one 'virtual/stub' node is set here with lable="virtualOne".
             But this node will be deleted after IdTree
             control is created completely.)      
            [Bindable]
            public var treeData:XMLList =new XMLListCollection(treeXML.car);
    2. view layer(treePage.mxml)
            private var _model:CsModel = new CsModel();
            private function addNode():void
                    var newNode:XML=<car/>;
                    newNode.@label="newOne";
                    newNode.@id=1;
                    _model.treeXML.appendChild(newNode);
                             private function cleanData():void
                                     delete _model.treeXML.car;
            <mx:VBox height="100%" width="100%">
            <mx:Button label="AddNode" click="addNode()" />
            <mx:Tree id="IdTree"  labelField="@label"
              creationComplete="cleanData()"
              dataProvider="{_model}"/>
        </mx:VBox>
    3. Top view layer (App.Mxml)
    <mx:application>
        <treePage />
    </mx:application>
    For method: cleanData(),It's expected that when the treePage is shown, we first delete the virutalOne to provide one 'clear' tree since we don't want show virtualOne to the user. The virutalOne node just for building the relationship between treeData and treeXML at beginning. But the side effect of this method, I found, is that the relationship between treeXML and treeData was cut off. And this leads to that when I added new node (by click the 'addNode' button) to the xmlXML, the xmlData was not affected at all !
    So Is there any other way to solve this issue or bind the incoming xml node list to the xmlListCollection which will be used as Tree control's dataProvider ?

    If u want to display the name : value then u can do like this
    <xsl:eval>this.selectSingleNode("name").nodeName</xsl:eval> : <xsl:value-of select="name" />

  • How to detect if the user is using SSL

    I use weblogic 5.1 sp6and NES 4.1. Netscape plug-in connects them together.
    I also install the verisign certificate on the NES 4.1.
    I want my JSP code to detect if the user is using http or https to visit my
    site. However, isSecure() will return false and getSchema will return https
    and getServerPort will return 80, even when the user is using https:// . I
    guess the reason is when the NES forwards the request to the weblogic, it is
    not using https.
    Then how can I detect the protocol the user is using? I use getHeaderNames()
    method to print out all the infomration in the HEADER. However, I find that
    it only includes client header information. Is it true that NES plug-in only
    fowards part of the HEADER information to the weblogic server?
    Thanks

    Comments inline....
    "Lan Jiang" <[email protected]> wrote in message
    news:3a74d511$[email protected]..
    I use weblogic 5.1 sp6and NES 4.1. Netscape plug-in connects themtogether.
    I also install the verisign certificate on the NES 4.1.
    I want my JSP code to detect if the user is using http or https to visitmy
    site. However, isSecure() will return false and getSchema will returnhttps
    and getServerPort will return 80, even when the user is using https:// . I
    guess the reason is when the NES forwards the request to the weblogic, itis
    not using https.getServerPort should return 443. It's a bug. Fixed already in the later
    service packs.
    Workaround: run the server in a port other than 443.
    >
    Then how can I detect the protocol the user is using? I usegetHeaderNames()
    method to print out all the infomration in the HEADER. However, I findthat
    it only includes client header information. Is it true that NES plug-inonly
    fowards part of the HEADER information to the weblogic server?No, it forwards all except the Connection header because it doesn't support
    http 1.1
    Vinod.

  • How to insert huge XML in CLOB using insert command in sql*plus....

    How to upload huge XML into a CLOB column of a normal table using a script?
    A simple insert statement does not seem to work.
    Thanks & regards.

    In SQL *Plus i'm trying to insert directly into the table.
    My insert statement is like below :
    Insert into ui_templates
    (TEMPLATE_ID, TEMPLATE_NAME, CUSTOMER_ID, DESCRIPTION, XML_CONTENT)
    Values
    (1, 'Default', 1, 'Main Default Template', '<?xml version="1.0" encoding="utf-8"?><xoraLayout:Layout name="MyLayout" version="1.0" ................<3357> chars long');
    COMMIT;
    Message was edited by:
    DKar

  • How to Create a XML Publisher Portlet using OmniPortlet

    Hi,
    Please help me. I have a project that needs to create an XML Publisher portlet using omni portlet. Is there any complete documents here or anyone can give more details on this? Appreciate to those will help..
    Thanks,
    Russel

    Hello Srini,
    Thank you very much for the reply but I'm not into OBIEE... I want the required query to be processed and the output to be shown in xml layout to load into RTF document. The rest I can manage.. but please let me know how to get the .xml output with out using the report builder or the apps environment(concurrent prg submission)..
    Please let me know if any... urgent
    Thanks in advance
    Krishna

  • How to display missing plugin and plugin used in a document?

    Hi,
    I need to write a plugin to display missing plugin and plugin used in a document using IContentMgr.
    Please help proceed further.....

    Try,
    InterfacePtr<IContentMgrAccess> contentMgrAccess(doc, UseDefaultIID());
    InterfacePtr<IContentMgr> contentMgr(contentMgrAccess->QueryContentMgr());

  • How to detect missing ipad?

    Hi... My ipad has been stolen.  How do I detect my missing ipad?

    If you set up Find My iPad/MobileMe on it before it was stolen then you can use that to potentially locate it - though it will need to be connected to a network and not have already been wiped. If you didn't set up Find My iPad before it was stolen then unfortunately it's too late.

  • Advanced queueing: How to detect disconnect/database down if using callback

    In my last thread here, I was able to create a callback mechanism for fetching messages posted to the AQ-queue. This means I can get rid of the loop that polls for messages, that we had earlier.
    In the loop I could detect network problems, because the Dequeue function would throw an exception. When I have a callback, no exception is thrown, since I do not try to dequeue before I know there is a message there.
    How can I handle detection of network problems/database problems when using callback? If not handled, the program thinks no mesages is sent, while actually the network might be down...
    I'm not to keen on looping and polling to check for network status, as the whole point of callback was to avoid this :)
    Regards,
    Sverre

    update: I've tried to use both the OCI and OCCI failover callback, but it is not called when e.g. the network cable is disconnected.
    Is there any way to get occi to notify me when there is something wrong with the connection? Right now my callback is never called again, if the network is disconnected and reconnected...
    Anyone?

  • How to detect a lost TCPIP SOCKET using LabVIEW and NI VISA

    I am using VISA functions in LabVIEW to remotely communicate with instruments over TCPIP SOCKET visa resources.   In general this all works well by simply creating a resource name, passing it to VISA Open and then setting a couple of session attributes.   Occasionally an instrument will be reset or power cycled and what I have noticed is that I need to call a VISA Close and then reopen the resource in order to get it to communicate again or close LabVIEW and run again.   If you just use VISA Open without calling a VISA Close first you cannot communicate with the target.   The problem is that I have no way of detecting this condition.   I have tried always calling a VISA Close before VISA Open and this seems to work for this condition but it seems odd to always close a session before opening it.   Why does VISA OPEN not work under this condition and is there any way to detect this situation?
    Solved!
    Go to Solution.

    It works that way because that is how TCP works. A TCP connection is a dedicated connection between two endpoints. Unfortunately other than getting an error from a read or write operation there is no way to determine if the othe rside of teh connection is still there. You need to close the connection because otherwise VISA will continue to use th eold connection which is no longer valid. Closing it allows the system to cleanup the dead connection.
    If you are communicating fairly infrequently you could simply open the connection, do you stuff and close it. The overhead for establishing the new connection is not that much. If you are using steady streams of data then you will need to watch for the errors and then reestablish the connection by closing the old one and opening a new connection as you have observed.
    Mark Yedinak
    "Does anyone know where the love of God goes when the waves turn the minutes to hours?"
    Wreck of the Edmund Fitzgerald - Gordon Lightfoot

  • How to return two XML result sets using the function

    Hi Experts,
    Thanks.

    So that I want to return two XML result sets if the query returns more than 50,000 records.
    One XML result set with 50,000 and another XML result set with remaining records.
    How to incorporate this in my function.
    Have the function return a collection of CLOB then.
    DBMS_XMLGEN can handle pagination so it's easy to adapt your existing code.
    Here's an example fetching data in batches of max. 3 rows each, using a pipelined function :
    SQL> create or replace type clob_array is table of clob;
      2  /
    Type created
    SQL>
    SQL> create or replace function genXmlRowset (p_deptno in number) return clob_array pipelined
      2  is
      3    ctx    dbms_xmlgen.ctxHandle;
      4    doc    clob;
      5  begin
      6 
      7    ctx := dbms_xmlgen.newContext('SELECT empno, ename FROM scott.emp WHERE deptno = :1');
      8    dbms_xmlgen.setBindValue(ctx, '1', p_deptno);
      9    dbms_xmlgen.setMaxRows(ctx, 3);
    10 
    11    loop
    12 
    13      doc := dbms_xmlgen.getXML(ctx);
    14      exit when dbms_xmlgen.getNumRowsProcessed(ctx) = 0;
    15      pipe row (doc);
    16 
    17    end loop;
    18 
    19    dbms_xmlgen.closeContext(ctx);
    20 
    21    return;
    22 
    23  end;
    24  /
    Function created
    SQL> set long 5000
    SQL> select * from table(genXmlRowset(30));
    COLUMN_VALUE
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
      <EMPNO>7499</EMPNO>
      <ENAME>ALLEN</ENAME>
    </ROW>
    <ROW>
      <EMPNO>7521</EMPNO>
      <ENAME>WARD</ENAME>
    </ROW>
    <ROW>
      <EMPNO>7654</EMPNO>
      <ENAME>MARTIN</ENAME>
    </ROW>
    </ROWSET>
    <?xml version="1.0"?>
    <ROWSET>
    <ROW>
      <EMPNO>7698</EMPNO>
      <ENAME>BLAKE</ENAME>
    </ROW>
    <ROW>
      <EMPNO>7844</EMPNO>
      <ENAME>TURNER</ENAME>
    </ROW>
    <ROW>
      <EMPNO>7900</EMPNO>
      <ENAME>JAMES</ENAME>
    </ROW>
    </ROWSET>
    SQL>
    (and don't forget to use bind variables in your query)

  • How to detect the current VI being used.

    I have built security into my LabVIEW application and would like to implement an auto logoff function. Is there a way I can get a VI reference to the VI that the user is currently interfacing with? I can then use the detect front panel activity vi to reset a timer.

    Check the VI Property:Front Panel Window:Is Frontmost. If that is true, the VI is in front and, therefore, is most likely the one being used. I am not sure how modal windows and dialog boxes affect this.
    Lynn

  • How to read the context node of used component?

    Hi,
    I have component called : SRQM_INCIDENT_H. This component has used component - BTSTATUS.
    Now, I need to read the context node of the BTSTATUS/UserStatus in GET Methods of Context node in SRQM_INCIDENT_H.
    Can you plese help me out.
    Thanks,
    Sandeep

    The component usages can be accessed from the component controller
    You should however assure that the context node is present in comp controlelr of the used component.View context nodes cannot be accessed.
    if not ,then you need to goto the component BTSTATUS ,add the context node  explicitly to comp controller,and do correct bindings to the view context node.
    Once you add the context node to the com controller,yo also need to expose it.
    go to runtime repository->component_interface->interface_controller->context->right click and select ADD CONTEXT NODE, and add you newly creatde context ndoe of comp contorller here.
    Now you cann access it using the code below in your comp SRQM_INCIDENT_H
    data:lr_comp_controller type ref to <ur comp controller class>lr_comp_controller ?= me->comp_controller.
        lr_comp_usage ?= lr_comp_controller->get_component_usage( iv_usage_name = '<name of the comp usage as in runtime repository' ).
        CHECK lr_comp_usage IS NOT INITIAL.
        lr_cnode ?= lr_comp_usage->get_context_node( iv_cnode_name = '<the required context node name>' ).
    Suvidha

  • How to filter particular xml tag value using -DBMS_XMLGEN / DBMS_XMLSTORE

    Hi,
    I am using dbms_xmlgen and dbms_xmlstore package to extract xml datafile tag value from file server to oracle database table.
    I have used the below pl/sql program to extract the xml tag values to oracle relational table.Its working fine for me.
    But I would like to extract the values based on particular filter condition.
    The following xml program I have 3 rows I would like extract the xml data based on the following condition .
    Filter condition
    ==============
    the tag <STATE_ABBREVIATION> value shuold be 'CA' and the <CITY> tag value should be Palo_Alto then I will store the ZIPCODE
    ZIP_CODE_EXTN,STATE_ABBREVIATION tag values in the Oracle Relational table.
    The below pl/sql program storing all the three rows but I required the values based on the filter condition that I mentioned earlier.
    Kindly assist me what are the steps that I need to change in this program.?
    XML Program file content.
    ======================
    <ZIPCODES>
    <mappings>
    <STATE_ABBREVIATION>CA</STATE_ABBREVIATION>
    <ZIPCODE>94301</ZIPCODE>
    <ZIP_CODE_EXTN>9277</ZIP_CODE_EXTN>
    <CITY>Palo_Alto</CITY>
    </mappings>
    <mappings>
    <STATE_ABBREVIATION>CA</STATE_ABBREVIATION>
    <ZIPCODE>95302</ZIPCODE>
    <ZIP_CODE_EXTN>9279</ZIP_CODE_EXTN>
    <CITY>LA</CITY>
    </mappings>
    <mappings>
    <STATE_ABBREVIATION>TX</STATE_ABBREVIATION>
    <ZIPCODE>75038</ZIPCODE>
    <ZIP_CODE_EXTN>7837</ZIP_CODE_EXTN>
    <CITY>DALLAS</CITY>
    </mappings>
    </ZIPCODES>
    PL/SQL Program for XML extract.
    ==========
    declare
    charString varchar2(80);
    finalStr varchar2(4000) := null;
    rowsp number;
    insCtx DBMS_XMLStore.ctxType;
    ctx dbms_xmlgen.ctxHandle;
    v_FileHandle UTL_FILE.FILE_TYPE;
    begin
    v_FileHandle := utl_file.fopen('XMLTEST','XML_NEW_CITIES.XML','r') ;
    loop
    BEGIN
    utl_file.get_line(v_FileHandle, charString);
    exception
    when no_data_found then
    utl_file.fclose(v_FileHandle);
    exit;
    END;
    dbms_output.put_line(charString);
    if finalStr is not null then
    finalStr := finalStr || charString;
    else
    finalStr := charString;
    end if;
    end loop;
    insCtx := DBMS_XMLStore.newContext('SYS.ZIPCODES');
    dbms_xmlgen.setRowsetTag(insCtx,'ZIPCODES');
    dbms_xmlgen.setRowsetTag(insCtx,'mappings');
    DBMS_XMLStore.clearUpdateColumnList(insCtx);
    DBMS_XMLStore.setUpdateColumn(insCtx,'ZIPCODE');
    DBMS_XMLStore.setUpdateColumn(insCtx,'ZIP_CODE_EXT N');
    DBMS_XMLStore.setUpdateColumn(insCtx,'STATE_ABBREV IATION');
    rowsp := dbms_xmlstore.insertXML(insCtx,finalstr);
    end;
    Thanks,
    nat

    Thanks for your reply. :)
    Its working fine in the DBMS_XMLSTORE package. Here I have given the code
    CREATE OR REPLACE TYPE typ_dummy AS  OBJECT
    ( "@ENO"   NUMBER,
      "@ENAME" VARCHAR2(100),
      eno      NUMBER,
      ename    VARCHAR2(100));
    CREATE TABLE EMP
      empno    VARCHAR2(25),
      sal      NUMBER,
      hiredate DATE,
      typ      TYP_DUMMY
    DECLARE
      insCtx DBMS_XMLStore.ctxType;
      rows NUMBER;
      xmldoc CLOB :=
        '<ROWSET>
           <ROW num="1">
             <SAL>1800</SAL>
             <EMPNO>739</EMPNO>
             <HIREDATE>27-AUG-1996</HIREDATE>
               <TYP ENO="739" ENAME="Nazurullah">
               <ENO> 1 </ENO>
               <ENAME> ALDRIN </ENAME>
               </TYP>
           </ROW>
           <ROW>
             <SAL>18000</SAL>
             <EMPNO>7369</EMPNO>
             <HIREDATE>27-AUG-1996</HIREDATE>
             <TYP ENO="7369" ENAME="PEPPIN" />
           </ROW>
           <ROW>
             <SAL>37000</SAL>
             <EMPNO>20701</EMPNO>
             <HIREDATE>27-AUG-1996</HIREDATE>
             <TYP>
               <ENO> 20701 </ENO>
               <ENAME> VENKATACHALAM </ENAME>
             </TYP>
           </ROW>
         </ROWSET>';
    BEGIN
      insCtx := DBMS_XMLStore.newContext('emp'); -- get saved context
      -- Now insert the doc.
      -- This will only insert into EMPNO, SAL and HIREDATE columns
      rows := DBMS_XMLStore.insertXML(insCtx, xmlDoc);
      -- Close the context
      DBMS_XMLStore.closeContext(insCtx);
    END;
    SELECT * FROM emp;
    EMPNO        SAL HIREDATE          TYP(@ENO, @ENAME, ENO, ENAME)
    739         1800 27-AUG-96     TYP_DUMMY(739, 'Nazurullah', 1, ' ALDRIN ')
    7369       18000 27-AUG-96     TYP_DUMMY(7369, 'PEPPIN', NULL, NULL)
    20701      37000 27-AUG-96     TYP_DUMMY(NULL, NULL, 20701, ' VENKATACHALAM ')

Maybe you are looking for

  • Lync "unable to connect" to meetings on Mountain Lion

    Hi All, I've just upgraded to Mountain Lion and am facing an issue with Lync where it won't connect to meetings. It will eventually connect after I refresh the URL enough times, but most times I will get this message: "Unable to connect. Try connecti

  • Directory strructure containing albums duplicated when using ADD FOLDER

    I have a media PC that I hold all my albumns on networked... Ive used itunes on my laptop and added the root directory to the library (add folder etc). However if i add new albums to the media pc itunes doesnt pick them up and if I re-add the route d

  • IChat back drop problem for Leopard

    whenever i use a video back drop in iChat or in Photo Booth, the back drop becomes corrupted and i start to see my real background. Im keeping completely still and yet i still have the problem. help me fix it.

  • Global transaction ID - k2gtitid_ora from x$k2gte

    Hi, I know that select g.k2gtitid_ora from x$k2gte g gives global transaction id in my case DBSRC.DBREMOTE.05aef395.7.7.1260418 what information can I get from global transaction ID is there any meaning of 05aef395 . 7 . 7 . 1260418 like data_object_

  • Safety stock and min safety stock

    Dear all, CAn anybody explain me the functional difference between safety stock and min safety stock? And what is the meanng of safety time? Karthick