XML parsing inside some webservices

Hi,
I made some webservice where I tryed to use some XML parser made myself. The XML parser works fine in other implementation, but doesn't in this particular case.
It looks like the Oracle OC4J handles some XML and parses itself with worng result. After parsing procedure I obtian final result by calling:
document.getDocumentElement().toString();
In other situation I get there XML String after parsing routine, but the same inside webservice on OC4J gives result as below:
oracle.xml.parser.v2.XMLElement@93
What's a reason of two different results?
Thanks for some help
Krzysztof

Hi Krzysztof,
If you are looking to convert a DOM to a String I would recommend using one of the following approaches instead of using the "toString()" method.
XDK
import java.io.FileReader;
import java.io.StringWriter;
import oracle.xml.parser.v2.DOMParser;
import oracle.xml.parser.v2.XMLDocument;
import oracle.xml.parser.v2.XMLElement;
import org.w3c.dom.Node;
public class Test {
    public static void main(String[] args) throws Exception {
        FileReader reader = new FileReader("xpath.xml");
        DOMParser parser = new DOMParser();
        parser.parse(reader);
        XMLDocument xmlDocument = parser.getDocument();
        XMLElement xmlElement = (XMLElement)xmlDocument.getDocumentElement();
        StringWriter stringWriter = new StringWriter();
        xmlElement.print(stringWriter);
        String string = stringWriter.toString();
        System.out.println(string);
JAXP
import java.io.File;
import java.io.StringWriter;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
public class Test {
    public static void main(String[] args) {
        try {
            File file = new File("sample.xml");
            StreamSource source = new StreamSource(file);
            StringWriter stringWriter = new StringWriter();
            StreamResult result = new StreamResult(stringWriter);
            TransformerFactory transformerFactory = TransformerFactory.newInstance();
            Transformer transformer = transformerFactory.newTransformer();
            transformer.transform(source, result);
            String string = stringWriter.toString();
            System.out.println(string);
        } catch (TransformerException e) {
            // Handle the exception
            e.printStackTrace();
}-Blaise

Similar Messages

  • XML parsing error in Webservices

    Hi All,
    We have a web services to get service order details. It shows
    the following error sometimes on the browser.
    "XMLParser : #0 not allowed in Character data sections (:main:, row:1, col:0)"
    This particular error occurs only in quality system not in development. We found that this particular error is due to some special characters present in the service order notes(intergal/general). But same content doesn't reproduce the error in development system web services.
    I tried to find the place where exactly this error is populated to webservices. But i couldn't able to acheive it.
    But in transformation serializations the xml is getting filled. As of ma understanding there is no problem in serializations. Can anyone please tell the exact xml verification method/routine where this error might be thrown?.
    And the special character is passed as ' #'(space#) in export parameter(table) of web services function module. But we get the error as #0 not allowed .
    Your help is very much appreciated.
    Thanks,
    Karthik

    Hi All,
    I have solved this issue using the SAP note 1559677.
    Hope it helps someone.
    Thanks,
    Karthik

  • Parsing an xml document inside a Thread

    Hi Friends
    I have to do some processing in my application for which i need to use multithreading.
    Inside every new thread created i have to parse an xml document using s parsing tool like castor or jibx.
    My question is that is it possible to parse a xml document inside a new thread everytime it gets created.
    is it a good coding practice as it involves java code to do it.
    Thanks
    Vikeng

    vikeng wrote:
    Hi
    Thanks for the reply.
    Well i need to do some kind of a batch processing in my application.
    I need to parse an xml document and upload the data i get after parsing into columns in the database.
    Since its a batch what i was asking was is it possible to do it for every request as batch needs to handle hundreds of records during the daily or nightly sync.
    Is it a good practice to do parsing for every record in a batch
    Thanks
    VikengI don't get it. One batch is one document, and that document contains e.g. 100 records? What's one request? A request for one batch? I would execute one batch in one thread.
    Kaj

  • Looking for some basics/fundamentals of XML Parsing in ABAP

    Hello SAP gurus
    I have to start workign on a project that involves Variant Configuration stuff that will be sent as XML document. I have to parse the XML document and save the needed data in some custom tables. I heard that there are some standard functions that we can use to do this job. I tried searching SDN for string XML parsing and got tons of postings regarding this. I tried to go through them one by one but it was way beyond my understanding at this time. I am looking for the fundamentals or how to start from scratch.
    I would appreciate if anybody can guide me to find some kind tutorial or basic info on where and how to start.
    Thanks a lot in advance
    Ram

    XML parsing through CALL TRANSFORMATION is one of the easiest method. A transformation needs to be created as per your XML data in transaction XSLT_TOOL and the transformation needs to be called in ABAP program using "CALL TRANSFORMATION" statement.
    Kindly search in internet for XSLT/simple transformations.

  • How to parse XML document returned by webservices

    Hi,
    I have a form (version 10.1.2.0) which has to display the credit card types using webservices. I created the webstub and jar file through jdeveloper and then after adding the jar files in the respective classpaths, I import it in the forms. I write the code in when-button-pressed and it gives the result in xml document like this:
    <?xml version="1.0" encoding="UTF-8"?><WSAnswerTO><error>false</error><errorMessage></errorMessage><
    results><CardTypeTO><carTypId>3</carTypId><type>AMERICAN
    EXPRESS</type><numLength>15</numLength><cvvLength>4</cvvLength><comments>1 800-639-0002</comments></CardTypeTO><CardTypeTO><carTypId>4</carTypId><type>DISCOVER</type><numLength>16</numLength><cvvLength>3</cvvLength><comments>1 800-347-2683</comments></CardTypeTO><CardTypeTO><carTypId>1</carTypId><type>MASTERCARD</type><numLength>16</numLength><cvvLength>3</cvvLength><comments>1 800-633-7367</comments></CardTypeTO><CardTypeTO><carTypId>2</carTypId><type>VISA</type><numLength>16</numLength><cvvLength>3</cvvLength><comments>1 800-945-2000</comments></CardTypeTO></results></WSAnswerTO>
    From the above xml document, I only need to display the type (such as AMERICAN EXPRESS, VISA, ETC) in my forms. Can somebody please tell me how to do it. Do I need to store the values in a table first and then retrieve it. Please advise. I have already read a otn document in xml parsing but I didnt understand anything from it.
    Please help. Thanks in advance.

    Hello,
    It probably exists a database package/function to parse this kind of stuff.
    If you want to keep the process into the Forms, here is a PL/SQL package you can use:
    CREATE OR REPLACE PACKAGE Pkg_Tools AS
      --  Types  --
      -- table of strings --
      TYPE TYP_TAB_CHAR IS TABLE OF VARCHAR2(4000) INDEX BY BINARY_INTEGER;
      --  Methodes   --
      -- function that return all contents for a given XML tag --
      FUNCTION Get_Xml_Tag
         PC$XmlContent  IN VARCHAR2,                 -- XML string
         PC$Tag         IN VARCHAR2,                 -- searched tag
         PC$NewLine     IN VARCHAR2 DEFAULT CHR(10)  -- defaull NL character
      RETURN TYP_TAB_CHAR ;
    END Pkg_Tools;
    CREATE OR REPLACE PACKAGE BODY Pkg_Tools
    IS
      -- fonction de retour du contenu d'une balise XML  --
      FUNCTION Get_Xml_Tag
         PC$XmlContent  IN VARCHAR2,                 -- contenu XML
         PC$Tag         IN VARCHAR2,                 -- tag recherche
         PC$NewLine     IN VARCHAR2 DEFAULT CHR(10)  -- defaull NL character
      RETURN TYP_TAB_CHAR
      IS
       TC$Table      TYP_TAB_CHAR ;
       LC$Ligne      VARCHAR2(32000) ;
       LC$Xml        VARCHAR2(32000) ;
       LN$INDEX      PLS_INTEGER := 0 ;
       LN$TagDeb     PLS_INTEGER ;
       LN$TagFin     PLS_INTEGER ;
       LN$TagLength  PLS_INTEGER ;
       LN$LigLength  PLS_INTEGER ;
       LN$Occur      PLS_INTEGER := 1 ;
      BEGIN
        IF ( PC$XmlContent IS NOT NULL AND PC$Tag IS NOT NULL ) THEN
          LC$Xml := REPLACE( PC$XmlContent, CHR(13), '' ) ;
          LN$TagLength := LENGTH( PC$Tag ) ;
           LOOP
          LN$TagDeb := INSTR( LC$Xml, PC$Tag, 1, LN$Occur ) ;
          LN$TagFin := INSTR( LC$Xml, '</' || SUBSTR(PC$Tag,2, 256), 1, LN$Occur ) ;
          LN$LigLength := (LN$TagFin - ( LN$TagDeb + LN$TagLength ) ) ;
          IF (LN$TagDeb > 0 AND LN$TagFin > 0 ) THEN
             LN$Occur := LN$Occur + 1 ;
             LC$Ligne := SUBSTR( LC$Xml, LN$TagDeb + LN$TagLength, LN$LigLength ) ;
             LOOP
               LN$INDEX := LN$INDEX + 1 ;
               LN$TagDeb := INSTR( LC$Ligne, PC$NewLine ) ;
               IF LN$TagDeb > 0 THEN
                 IF Trim( SUBSTR( LC$Ligne, 1, LN$TagDeb - 1 )) IS NOT NULL THEN
                   TC$Table(LN$INDEX) := SUBSTR( LC$Ligne, 1, LN$TagDeb - 1 ) ;
                 ELSE
                   LN$INDEX := LN$INDEX - 1 ;
                 END IF ;
                 LC$Ligne := SUBSTR( LC$Ligne, LN$Tagdeb + LENGTH( PC$NewLine ), 30000 ) ;
               ELSE
                 IF Trim(LC$Ligne) IS NOT NULL THEN
                    TC$Table(LN$INDEX) := LC$Ligne ;
                 END IF ;
                 EXIT ;
               END IF ;
             END LOOP ;
          ELSE
              EXIT ;
          END IF ;
           END LOOP ;
        END IF ;
        RETURN TC$Table ;
      END Get_Xml_Tag ;
    END Pkg_Tools;
    /Then the call:
    DECLARE
       LC$t  VARCHAR2(2000);
       LT$Table Pkg_Tools.TYP_TAB_CHAR ;
    BEGIN
       lc$t := '<?xml version="1.0" encoding="UTF-8"?><WSAnswerTO><error>false</error><errorMessage></errorMessage><results>'
    ||'<CardTypeTO><carTypId>3</carTypId><TYPE>AMERICAN EXPRESS</TYPE><numLength>15</numLength><cvvLength>4</cvvLength>'
    ||'<comments>1 800-639-0002</comments></CardTypeTO><CardTypeTO><carTypId>4</carTypId><TYPE>DISCOVER</TYPE>'
    ||'<numLength>16</numLength><cvvLength>3</cvvLength><comments>1 800-347-2683</comments></CardTypeTO>'
    ||'<CardTypeTO><carTypId>1</carTypId><TYPE>MASTERCARD</TYPE><numLength>16</numLength><cvvLength>3</cvvLength>'
    ||'<comments>1 800-633-7367</comments></CardTypeTO><CardTypeTO><carTypId>2</carTypId><TYPE>VISA</TYPE>'
    ||'<numLength>16</numLength><cvvLength>3</cvvLength><comments>1 800-945-2000</comments></CardTypeTO></results></WSAnswerTO>' ;
       LT$Table := Pkg_Tools.Get_Xml_Tag(LC$T,'<TYPE>') ; 
       IF LT$Table.COUNT > 0 THEN
         FOR i IN LT$Table.First .. LT$Table.Last LOOP
            dbms_output.put_line( 'Table(' || i || ')=' || LT$Table(i) ) ;
         END LOOP ;
       ELSE
         dbms_output.put_line( 'tag xml not found' ) ;
       END IF ;
    END;Francois

  • XML parser to parse XML inside HTML file

    Hi,
    I wish to know is there any other parsers apart from JAXP to parse xml content present inside HTML file. For example,
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title></title>
    </head>
    <body>
    <form id="j_id_jsp_1394907664_1" name="j_id_jsp_1394907664_1" method="post" action="/msaiphoneportal1.1c/pages/xmlchech.faces;jsessionid=5666F0E1CF0E44B978940F021012AA41" enctype="application/x-www-form-urlencoded">
    <input type="hidden" name="j_id_jsp_1394907664_1" value="j_id_jsp_1394907664_1" />
    <?xml version="1.0" encoding="UTF-8"?>
    <hospital>
    <Users>
    <User id="1" password="x" type="staff" username="x"/>
    <User id="2" password="y" type="staff" username="y"/>
    <User id="3" password="z" type="staff" username="z"/>
    </Users>
    <Survey/>
    <Patients>staaatus</Patients>
    </hospital>
    <input type="hidden" name="j_id_jsp_1394907664_1:j_id_jsp_1394907664_2" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-4298162632826268059:-1507671971163298623" autocomplete="off" />
    </form>
    </body>
    </html>
    I need to read the XML content inside. Is there any way please let me know
    Edited by: DHURAI on Jul 22, 2010 12:59 AM

    DHURAI wrote:
    while reading, we can fetch the starting of XML through <?xml> tag, but how we know the ending of the XML as it seems to be dynamic.1) Extract the document root element which follows the <?xml ... ?>
    2) From this root element , construct the associated root element terminal by inserting a / after the <.
    3) Search for the terminal.
    If the root name can also be the name of an enclosed element then you will have to count the number of terminals.

  • WebService XML Parsing

    Hi,
    I am trying to parse the XML returned from this webservice http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl . I need to get the information in the city tag. I am not sure what I am wrong here. I am not sure how to get the City from the XML returned from the webservice. If I do a returnedXML.*; it prints the whole xml returned from the service, but how do I retrieve just the city?
    Thanks for your help.
    Here is my code:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
            layout="vertical"
            verticalAlign="middle"
            backgroundColor="white"
            initialize="onLoad()">
        <mx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import mx.rpc.events.ResultEvent;
                import mx.rpc.events.FaultEvent;
                import mx.utils.ObjectUtil;
                private var returnXML:XML;
                private function onLoad():void {
                    webService.GetCityForecastByZIP.send();
                private function GetCityForecastByZIP_result(evt:ResultEvent):void {
                   returnXML = new XML(evt.result);
                   textArea.text =returnXML.*;
                private function GetCityForecastByZIP_fault(event:FaultEvent):void {
                    Alert.show(event.fault.faultCode + ": " + event.fault.faultString, "Error");
            ]]>
        </mx:Script>
        <mx:WebService id="webService" wsdl="http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl">
            <mx:operation name="GetCityForecastByZIP" resultFormat="e4x" result="GetCityForecastByZIP_result(event);" fault="GetCityForecastByZIP_fault(event);">
                <mx:request>
                    <ZIP>07310</ZIP>
                </mx:request>
            </mx:operation>
        </mx:WebService>
        <mx:TextArea id="textArea"
                editable="false"
                width="100%"
                height="100%" />
    </mx:Application>
    Here is what I get back from the webservice If I print a returnXML.*
    <GetCityForecastByZIPResult xmlns="http://ws.cdyne.com/WeatherWS/">
      <Success>true</Success>
      <ResponseText>City Found</ResponseText>
      <State>NJ</State>
      <City>Jersey City</City>
      <WeatherStationCity>Newark</WeatherStationCity>
      <ForecastResult>
        <Forecast>
          <Date>2009-06-05T00:00:00</Date>
          <WeatherID>5</WeatherID>
          <Desciption>Rain</Desciption>
          <Temperatures>
            <MorningLow/>
            <DaytimeHigh>62</DaytimeHigh>
          </Temperatures>
          <ProbabilityOfPrecipiation>
            <Nighttime/>
            <Daytime/>
          </ProbabilityOfPrecipiation>
        </Forecast>
        <Forecast>
          <Date>2009-06-06T00:00:00</Date>
          <WeatherID>4</WeatherID>
          <Desciption>Sunny</Desciption>
          <Temperatures>
            <MorningLow>55</MorningLow>
            <DaytimeHigh>81</DaytimeHigh>
          </Temperatures>
          <ProbabilityOfPrecipiation>
            <Nighttime/>
            <Daytime/>
          </ProbabilityOfPrecipiation>
        </Forecast>
    </ForecastResult>
    </GetCityForecastByZIPResult>

    I changed resultformat from e4x to xml.
    Here is the code that is working:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
            layout="vertical"
            verticalAlign="middle"
            backgroundColor="white"
            initialize="onLoad()">
        <mx:Script>
            <![CDATA[
                import mx.controls.Alert;
                import mx.rpc.events.ResultEvent;
                import mx.rpc.events.FaultEvent;
                import mx.utils.ObjectUtil;
                private var returnXML:XML;
                private namespace weather = "http://ws.cdyne.com/WeatherWS/";
                use namespace weather;
                private function onLoad():void {
                    webService.GetCityForecastByZIP.send();
                private function GetCityForecastByZIP_result(evt:ResultEvent):void {
                   returnXML = new XML(evt.result);
                   textArea.text ="result is "+returnXML.GetCityForecastByZIPResult.City;
                private function GetCityForecastByZIP_fault(event:FaultEvent):void {
                    Alert.show(event.fault.faultCode + ": " + event.fault.faultString, "Error");
            ]]>
        </mx:Script>
        <mx:WebService id="webService" wsdl="http://ws.cdyne.com/WeatherWS/Weather.asmx?wsdl">
            <mx:operation name="GetCityForecastByZIP" resultFormat="xml" result="GetCityForecastByZIP_result(event);" fault="GetCityForecastByZIP_fault(event);">
                <mx:request>
                    <ZIP>07310</ZIP>
                </mx:request>
            </mx:operation>
        </mx:WebService>
        <mx:TextArea id="textArea"
                editable="false"
                width="100%"
                height="100%" />
    </mx:Application>
    Thanks

  • XML Parsing. Just need some guidance.

    Hi,
    This is my project. I need to be able to read in XML code in my java program and then do necessary tasks such as updating my oracle database with the values. I heard and looked at the java API for that but Im not so sure xml parsing is the correct words that I should be using. Does anyone know of a way to do this or at least somewhere that I could go look for an example.
    Thanks in advance.

    Hi!
    What you are looking for is either SAX (Simple API for XML) or DOM (Document Object Model).
    Look here for a SAX-Tutorial:
    http://java.sun.com/xml/jaxp/dist/1.1/docs/tutorial/sax/
    There are also several dom-tuts to find in the internet.
    Good luck!

  • XML Parsing error in PL/SQL

    Hello,
    I have some problem in parsing Mircrosoft OpenXML file using Oracle 10g Release2 XML Parser for PL/SQL.
    I use dbms_xmlparser, dbms_xmldom, dbms_xslprocessor packages
    OpenXML file use "w:" as namespace, so every element has prefix "w:" like
    <w:wordDocument ..>
    <w:body..>
    <w:p..>
    <w:r..>
    <w:t..>
    My job is to read OpenXML file inside PL/SQL code, parse it, and load it into the corresponding table.
    Here is my PL/SQL code.
    DECLARE
    doc dbms_xmldom.DOMDocument;
    node_list dbms_xmldom.DOMNodeList;
    l_node dbms_xmldom.DOMNode;
    one_element dbms_xmldom.DOMElement;
    PROCEDURE p (msg VARCHAR2, nl BOOLEAN := TRUE) IS
    BEGIN
    dbms_output.put_line (msg);
    IF nl THEN dbms_output.put(CHR(10)); END IF;
    END:
    BEGIN
    doc := xml.parse(BFileName('XML_DIR','OpenXMLFile.xml'));
    node_list := xpath.selectNodes(doc, '/w:wordDocument/w:body/w:p/w:r/w:t');
    FOR j IN 0..dbms_xmldom.getLength(node_list)-1
    LOOP
    p( xpath.valueOf(dbms_xmldom.item(node_list, j), '.'), nl=>FALSE );
    END LOOP;
    Here is the error message.
    ERROR at line 1:
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00601: Invalid token in: '/w:wordDocument/w:body/w:p/w:r/w:t
    [starts-with(., "!")]'
    ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 900
    ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 928
    ORA-06512: at "SYSTEM.XPATH", line 173
    ORA-06512: at "SYSTEM.XPATH", line 179
    ORA-06512: at line 38
    I really don't know why I got this error message nor how to solve it. If I remove "w:" manually within open xml file, then parsing works well. I guess XML parser for PL/SQL doesn't recognize ":" or maybe doesn't support namespace?
    My question is
    1. In oracle 10g release2, XML Parser for PL/SQL can recognize ":" in the element name? or does it support namespace? If not, is there any workaround for solving this problem?
    2. How can I make XML Parser recognize ":" in the element name in the xml file or How can I declare namespace in the PL/SQL code so that PL/SQL xml parser can recognize namespace like "w:"?
    In fact, I don't use XML DB and what I want to do is just to load XML file into the relational table and some parts of whole XML file will be inserted into the CLOB in the table.
    Should I really use XML DB to do the above job?
    Any comment or suggestions will be greatly appreciated.

    This works correctly. I added prefixes to your extract path. (I had to add the xmlns:xsi to your root node also.)
    declare
      -- Local variables here
       doc_in       dbms_xmldom.DOMDocument;
       aNodeList    dbms_xmldom.DOMNodeList;
    begin
      -- Test statements here
      doc_in := dbms_xmldom.newdomdocument(
    '<?xml version="1.0" encoding="UTF-8"?>' ||
    '<ap:Collection xmlns:ap="http://www.abc.com/ap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.com/ap template.xsd"> ' ||
    '<ap:info>' ||
    '<ap:data name="Barbie" age="3">' ||
    '</ap:data>' ||
    '</ap:info>' ||
    '</ap:Collection>');
      aNodeList := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(doc_in),
                                                 '/ap:Collection/ap:info',
                                                 'xmlns:ap="http://www.abc.com/ap"');  
      dbms_output.put_line('length of aNodeList = '|| dbms_xmldom.getLength(aNodeList) );
    end;

  • XML Parsing in a Schedule Job (OIM 11g R1)

    Hi,
    I am writing a lookup recon - schedule task in OIM 11g R1 to connect to a webservice and get the lookup attribute values. Now, I am able to fetch the values in a xml format. I am facing an issue while trying to parse the xml values (tried both as a string and from a file).
    I have tried using both the SAX and the DOM parser. PFA the snippet for the DOM Parser:
                        DocumentBuilderFactory builderFactory =
                            DocumentBuilderFactory.newInstance();
                        DocumentBuilder builder = null;
                        try {
                            builder = builderFactory.newDocumentBuilder();
                        } catch (ParserConfigurationException e) {
                            e.printStackTrace();
                        org.w3c.dom.Document doc =
                            (org.w3c.dom.Document)builder.parse(file);
                        System.out.println("Parsed the xml");
                        org.w3c.dom.NodeList nodes =
                            doc.getElementsByTagName("entry");
                        System.out.println("Total Profiles fetched:: " +
                                           nodes.getLength());
    This is giving the nodes.getLength() as 0. Though the code runs fine in the Java Client (directly from eclipse)
    The snippet for the SAX method is :
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser saxParser = factory.newSAXParser();
                DefaultHandler handler = new DefaultHandler() {
                    boolean bfname = false;
                    boolean blname = false;
                    boolean bnname = false;
                    boolean bsalary = false;
                    public void startElement(String uri, String localName,
                                             String qName,
                                             Attributes attributes) throws SAXException {
                        //   System.out.println("Start Element :" + qName);
                        if (qName.equalsIgnoreCase("d:Name")) {
                            blname = true;
                    public void endElement(String uri, String localName,
                                           String qName) throws SAXException {
                        //     System.out.println("End Element :" + qName);
                    public void characters(char[] ch, int start,
                                           int length) throws SAXException {
                        if (blname) {
                            System.out.println("d:Name : " +
                                               new String(ch, start, length));
                            blname = false;
                           saxParser.parse("home/oracle/UserProfiles.xml", handler);
    This is throwing a java.net.malformedurlexception: no protocol: /home/oracle/userprofiles.xml exception. I tried to pass it as "file://home/oracle/UserProfiles.xml" but then is gives a
    java.net.ConnectException: Connection refused Even this code is running fine in the Java Client when ran directly. It seems there is some weblogic configurations I am missing for the XML parsing?
    Please do help, if anyone has faced any issues parsing an xml in a Schedule job. Will highly appreciate your inputs.
    Thanks,
    Anuj.  

    Hi,
    I am writing a lookup recon - schedule task in OIM 11g R1 to connect to a webservice and get the lookup attribute values. Now, I am able to fetch the values in a xml format. I am facing an issue while trying to parse the xml values (tried both as a string and from a file).
    I have tried using both the SAX and the DOM parser. PFA the snippet for the DOM Parser:
                        DocumentBuilderFactory builderFactory =
                            DocumentBuilderFactory.newInstance();
                        DocumentBuilder builder = null;
                        try {
                            builder = builderFactory.newDocumentBuilder();
                        } catch (ParserConfigurationException e) {
                            e.printStackTrace();
                        org.w3c.dom.Document doc =
                            (org.w3c.dom.Document)builder.parse(file);
                        System.out.println("Parsed the xml");
                        org.w3c.dom.NodeList nodes =
                            doc.getElementsByTagName("entry");
                        System.out.println("Total Profiles fetched:: " +
                                           nodes.getLength());
    This is giving the nodes.getLength() as 0. Though the code runs fine in the Java Client (directly from eclipse)
    The snippet for the SAX method is :
                SAXParserFactory factory = SAXParserFactory.newInstance();
                SAXParser saxParser = factory.newSAXParser();
                DefaultHandler handler = new DefaultHandler() {
                    boolean bfname = false;
                    boolean blname = false;
                    boolean bnname = false;
                    boolean bsalary = false;
                    public void startElement(String uri, String localName,
                                             String qName,
                                             Attributes attributes) throws SAXException {
                        //   System.out.println("Start Element :" + qName);
                        if (qName.equalsIgnoreCase("d:Name")) {
                            blname = true;
                    public void endElement(String uri, String localName,
                                           String qName) throws SAXException {
                        //     System.out.println("End Element :" + qName);
                    public void characters(char[] ch, int start,
                                           int length) throws SAXException {
                        if (blname) {
                            System.out.println("d:Name : " +
                                               new String(ch, start, length));
                            blname = false;
                           saxParser.parse("home/oracle/UserProfiles.xml", handler);
    This is throwing a java.net.malformedurlexception: no protocol: /home/oracle/userprofiles.xml exception. I tried to pass it as "file://home/oracle/UserProfiles.xml" but then is gives a
    java.net.ConnectException: Connection refused Even this code is running fine in the Java Client when ran directly. It seems there is some weblogic configurations I am missing for the XML parsing?
    Please do help, if anyone has faced any issues parsing an xml in a Schedule job. Will highly appreciate your inputs.
    Thanks,
    Anuj.  

  • XML parsing in Stored procedure

    Hi friends,
    PLease help to resove my issue mentioned below.
    I am tring to parse one large xml whic i am getting from calling a webservice.I am reading line by line from the request and storing into a clob variable.
    I convert it to xml type for some manipulation after that When i am trying to convert it back to Clob by using getClobVal() data is getting truncated.
    Please help how can i resolve this issue

    hI,
    i AM TRYING TO CALL A WEBSERVICE FROM MY ORACLE STORED PROCEDURE .tHE REQUEST IS LIKE
    soap_request:= '<soapenv:Envelope xmlns:soapenv="" xmlns:web="">
    <soapenv:Header/>
    <soapenv:Body xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="">
    <web:getEmpInfo>
    <Param>
    <WST/>
    <EmpId>'I am giving certain value here'</EmpId>
    <requestId/>
    </Param>
    </web:getEmpInfo>
    </soapenv:Body>
    </soapenv:Envelope>';
    http_req:= utl_http.begin_request
    ( 'Webservice URL'
    , 'POST'
    , 'HTTP/1.1'
    utl_http.set_header(http_req, 'Content-Type', 'text/xml'); -- since we are dealing with plain text in XML documents
    utl_http.set_header(http_req, 'Content-Length', length(soap_request));
    utl_http.set_header(http_req, 'SOAPAction', ''); -- required to specify this is a SOAP communication
    utl_http.write_text(http_req, soap_request);
    http_resp:= utl_http.get_response(http_req);
    utl_http.read_text(http_resp, soap_respond);// soap_request CLOB;
    // soap_respond CLOB;
    utl_http.end_response(http_resp);
    resp:= XMLType.createXML(soap_respond);// resp XMLType;
    My REsponse from webservice is in the following format
    <soapenv:Body><p663:getEmpInfoResponse xmlns:p663=""><getEmpInfoReturn><errorLevel>1</errorLevel>
    <returnMessage>.</returnMessage>
    <returnSet>My result is in here</returnSet>
    After that i am
    EXTRACTING the resp for getting result set
    Then to get canonical XML format(I mean with out any < or> symbols i am using
    respStr := resp.getClobVall();
    respStr := DBMS_XMLGEN.CONVERT(respStr,1);
    resp:= XMLType.createXML(respStr);
    parser := xmlparser.newParser;
    xmlparser.parseBuffer(parser, respStr);
    doc := xmlparser.getDocument(parser);
    xmlparser.freeParser(parser);
    The data is getting truncated when resp.getClobVall() is calling
    . So end tag missing error is coming while parsing.
    I am using 9i version oracle. XML that is returning from webservice is more that 80K
    Edited by: user9138090 on Feb 12, 2010 10:55 AM
    Edited by: user9138090 on Feb 12, 2010 11:16 AM
    Edited by: user9138090 on Feb 12, 2010 12:02 PM
    Edited by: user9138090 on Feb 12, 2010 12:03 PM

  • Losing Line-feed in XML parsing (XMLTRANSFORM) or File output (clob2file)?

    Hi all, need some help please!
    I'm using a xslt file to transferm a XML file into a txt format file. Within the XSLT file, there is a carriage-return (<xsl:text>
    </xsl:text>) (it disappeared already, here is what i'm using "#xD" or "#xA", have to take the '&' and ';' away), but the final output txt file seems to lose this carriage-return/line-feed information. The output data became one-line.
    Here are the steps I've used:
    1. lv_xml_data = XMLTRANSFORM (a.xml_data, b.f_xslt)
    => output data into XMLTYPE;
    2. using XMLTYPE.getclobval to get the output data into CLOB format.
    lv_output_clob := XMLTYPE.getclobval (lv_xml_data);
    3. using encoding:
    lv_output_clob :=
    DBMS_XMLGEN.CONVERT (lv_output_clob, DBMS_XMLGEN.entity_decode);
    4. using clob2file write to a file with txt format.
    DBMS_XSLPROCESSOR.clob2file (lv_output_clob,
    lv_output_dir,
    lv_filename,
    NLS_CHARSET_ID ('UTF8')
    Been struggling with these a few days already. Any help is appreciated. I would really like to get some input to see what might cause the carriage-return/line-feed characters lost.
    Thanks in advance!
    -Jane
    Edited by: user9084567 on Feb 1, 2010 1:45 PM
    Edited by: user9084567 on Feb 1, 2010 1:47 PM
    Edited by: user9084567 on Feb 1, 2010 1:48 PM

    A_non,
    After a few testing, I can identify the CRLF was lost in XMLTRANSFORM. I had read your other thread related to this, and try to run this sample code:
    /* Formatted on 2010/02/03 15:32 (Formatter Plus v4.8.8) */
    DECLARE --Local variables here
    v_xml XMLTYPE
    := XMLTYPE
    ('<
    offers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="xsd.xsd"><
    submit type="DAM" date="2007-03-28" name="MKTPART1" mode="NORMAL"/><
    offer name="Jamestown" flag="true" version_no="1.0"><
    standing date="2007-03-29" type="WED"/><
    identifier external_id="523736560"/><
    /offer><
    /offers>'
    v_xslt XMLTYPE
    := XMLTYPE
    ('<
    xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <
    xsl:output method="text"/> <
    xsl:variable name="new_line" select="''&#xA;''" /> <
    xsl:template match="/"> <
    xsl:value-of select="/offers/offer/...name"/><
    xsl:value-of select="$new_line" /><
    xsl:value-of select="/offers/submit/...date"/><
    xsl:value-of select="$new_line" /><
    xsl:value-of select="/offers/offer/standing/...date"/><
    xsl:value-of select="$new_line" /><
    xsl:value-of select="/offers/offer/standing/...type"/><
    xsl:value-of select="$new_line" /><
    /xsl:template><
    /xsl:stylesheet>'
    BEGIN -- Test statements here
    DBMS_OUTPUT.put_line (XMLTYPE.transform (v_xml, v_xslt).getstringval ());
    END;
    But come out these error:
    Error at line 2
    ORA-31011: XML parsing failed
    ORA-19202: Error occurred in XML processing
    LPX-00230: invalid character 10 (U+000A) found in a Name or Nmtoken
    Error at line 4
    ORA-06512: at "SYS.XMLTYPE", line 310
    ORA-06512: at line 2
    Can not figure out why. Try to use this <xsl:variable name="new_line" select="''& # x A ;''" /> inside my style sheet, but it seems not taking it. Not too sure what's exactly should be the quotes for "''& # x A ;''" (w/o space). If I used doub quote + two single quotes, it returns error, LPX-00601: Invalid token in: ' '; if I used single quote + double quote, it did not bring in CRLF at all.
    Any input?
    Thanks in advance.

  • Compiler error "oracle.xml.parser.v2.XMLElement" not found in class com.ora

    Compiler error "oracle.xml.parser.v2.XMLElement" not found in class com.oracle.demos......?
    I am currently testing a simple sample application with a java code similar to the one shown at
    the bottom of this post.
    However during deployment/compilation the compiler gives an error:
    Error(26,23): XMLElement not found in class com.oracle.demos.orderbooking.ApproveImpl
    Additionally similar other errors appear:
    Error(23,66): JAXBException not found in class com.oracle.demos.orderbooking.ObjectFactory
    Error(51,58): UnmarshalException not found in class com.oracle.demos.orderbooking.ObjectFactory
    Error(9,92): Element not found in interface com.oracle.demos.orderbooking.Approve
    What's wrong?
    It seems to me that I have to add some (more) *.jar files/libraries to the project?
    Which *.jars and where should I add them in JDeveloper?
    source code:
    package com.oracle.demos.orderbooking;
    public class ApproveImpl extends com.oracle.demos.orderbooking.ApproveTypeImpl implements com.oracle.demos.orderbooking.Approve
    public ApproveImpl(oracle.xml.parser.v2.XMLElement node)
    super(node);
    }

    Hai James this the response I am getting can you please tell what should I write inside ora:getNodeValue() to get the value of node <genReturnText>
    The drag and dropping the variable name is not working, I have to write the path manually but I dont know how.
    <ns1:getRoutingAndFrameJumpersResponse xmlns:ns1="com.NetworkInstallations">
    -<com.GetRoutingAndFrameJumpersOutput>
    <destination>
    SW
    </destination>
    <e2EData>
    busProcOriginator
    </e2EData>
    <genReturnCode>
    40777
    </genReturnCode>
    <genReturnText>
    EMW_Get_Routing_And_FrameJumpers_Succeeded
    </genReturnText>
    <supplCode>
    ISY002
    </supplCode>
    <supplText>
    Transaction successfully completed.
    </supplText>
    <severityCode>
    S
    </severityCode>
    <retriable>
    false
    </retriable>
    </com.GetRoutingAndFrameJumpersOutput>
    </ns1:getRoutingAndFrameJumpersResponse>

  • XML Parse error while loading an XML file

    HI Folks,
    I was trying to load and XML file into BODS.. The XML file is well-formed and the same when tested in other tools  is getting loaded without any issues..
    I have created a XML-File format with the corresponding XSD..
    But here in BODS it is giving - Parse error
    1) when i try to view the data of the source XML in my dataflow ..it is giving "XML Parser Failed".. and not able to show data..
    2) When I run my job i get the same pares error - with details as under..
    ---> Error here is "Unable to recognize element 'TAB' " or some time is say " Element TAB should be qualified"
    Please guide with this if you have any info..thanks
    I'm pasting the XML source file format here for your reference:--
      <?xml version="1.0" encoding="iso-8859-1" ?>
    - <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
    - <asx:values>
    - <TAB>
    - <items>
    + <CUSTOMER_RECORD>
      <CUSTOMER_NUMBER>1111111111</CUSTOMER_NUMBER>
      <NAME_1>ABC</NAME_1>
      <NAME_2>OFM/COMMERCIAL ACCOUNTS</NAME_2>
      <STREET_1>31 CENTER DRIVE MCS2045</STREET_1>
      <STREET_2 />
      <CITY>BETHESDA</CITY>
      <STATE_CODE>MD</STATE_CODE>
      <POSTAL_CODE>20892-2045</POSTAL_CODE>
      <COUNTRY_CODE>US</COUNTRY_CODE>
      <ORDER_BLOCK />
      <ERP_CREATE_DATE>20040610</ERP_CREATE_DATE>
      <ERP_CREATED_BY>DGUPTA</ERP_CREATED_BY>
      <ERP_MODIFY_DATE>20120201</ERP_MODIFY_DATE>
      <ERP_MODIFIED_BY>LWOHLFEI</ERP_MODIFIED_BY>
      <INDUSTRY_CODE>0103</INDUSTRY_CODE>
      <ACCOUNT_GROUP_ID>0001</ACCOUNT_GROUP_ID>
      <SALES_NOTE />
      <ADDRESS_NOTE />
      <CUSTOMER_CLASSIFICATION_CODE>02</CUSTOMER_CLASSIFICATION_CODE>
      <GLN_NUMBER />
      <PREVIOUS_ACCT_NO />
      <ACCOUNT_TYPE />
      <GAG />
      <SDI_ID />
      <HOSP_ID />
      <HIN />
      <DUNS />
      <PO_BOX />
      <POB_CITY />
      <POB_ZIP />
      <PHONE_NUMBER>77777</PHONE_NUMBER>
      <EMAIL_DOMAIN />
      <REQUESTER />
      <ERP_SOURCE_SYSTEM>ECC</ERP_SOURCE_SYSTEM>
      </CUSTOMER_RECORD>
    - <SALES_ORG_DATA>
    + <item>
      <CUSTOMER_NUMBER>1111111111</CUSTOMER_NUMBER>
      <SALES_ORG>0130</SALES_ORG>
      <CUSTOMER_GROUP>03</CUSTOMER_GROUP>
      <ORDER_BLOCK_CODE />
      <ERP_SOURCE_SYSTEM>ECC</ERP_SOURCE_SYSTEM>
      </item>
    + <item>
      <CUSTOMER_NUMBER>1111111111</CUSTOMER_NUMBER>
      <SALES_ORG>0120</SALES_ORG>
      <CUSTOMER_GROUP>11</CUSTOMER_GROUP>
      <ORDER_BLOCK_CODE />
      <ERP_SOURCE_SYSTEM>ECC</ERP_SOURCE_SYSTEM>
      </item>
      </SALES_ORG_DATA>
      </items>
      </TAB>
      </asx:values>
      </asx:abap>

    Pierre,
    Depending on the object "myLastFile", the method openDlg might not even exist (if the myLastFile object is not a File object, for instance). And I do not see any need for the myLastFile anyhow, as you are presenting a dialog to select a file to open. I recommend using the global ChooseFile( ) method instead. This will give you a filename as string in full path notation, or null when no file was selected in the dialog. I am not sure what your ExtendScript documentation states about the return value for ChooseFile, but if that differs from what I am telling you here, the documentation is wrong. So, if you replace the first lines of your code with the following it should work:
    function openXMLFile ( ) {
        var filename = ChooseFile ( "Choose XML file ...", "", "*.xml", Constants.FV_ChooseSelect );
    While writing this, I see that Russ has already given you the same advice. Use the symbolic constant value I indicated to use the ChooseFile dialog to select a single file (it can also be used to select a directory or open a file - but you want to control the opening process yourself). Note that this method allows you to set a start directory for the dialog (second parameter). The ESTK autocompletion also gives you a fifth parameter "helplink" which is undocumented and can safely be ignored.
    Good luck
    Jang

  • XML parsing problem

    Hi, my problem is :
    In my Application i want to parse an XML file with DOM parser. The problem is that in my Project "MyProject -> Project Properties -> Libraries and Classpath"
    I have included some 15 libraries which are useful for my Application: ADF Faces Runtime 11, ADF Web Runtime and etc.
    Problems are causing the libraries: BC4J Runtime,ADF Model Runtime, MDS Runtime Dependencies
    because when added my source which is parsing an XML file stops working.The source code is:
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    File file =
    new File("C:\\Documents and Settings\\ilia\\Desktop\\begin.xml");
    Document doc = db.parse(file);
    Element root = doc.getDocumentElement();
    NodeList dots = root.getElementsByTagName("w:t");
    Element firstDot = (Element)dots.item(0);
    String textValue = firstDot.getFirstChild().getNodeValue();
    I use DOM because i need to change some values in the XML file, but its not working neither for reading nor for writing.When debugging I see that it gets the root of the xml but " firstDot.getFirstChild().getNodeValue() " returns null and it breaks with NullPointerException. And that's only when the libraries mentioned above are added to the project. Without them it works just fine !
    I don't know, it's like when added the parser validates my xml against some schema and returns null.
    The xml file is very simple MS Word Document saved as .xml .But I don't think that's the problem.
    Thanks in advance !
    iliya

    Hi all,
    I found the solution to my problem.The right way to parse and change an XML file with DOM parser using the Oracle XML Parser v2 should look like this:
    JXDocumentBuilderFactory factory =
    (JXDocumentBuilderFactory)JXDocumentBuilderFactory.newInstance();
    JXDocumentBuilder documentBuilder =
    (JXDocumentBuilder)factory.newDocumentBuilder();
    File file = new File("c:/Documents and Settings/ilia/Desktop/begin.xml");
    InputStream input =
    new FileInputStream(file);
    XMLDocument xmlDocument = (XMLDocument)(documentBuilder.parse(input));
    System.out.println("Encoding: " + xmlDocument.getEncoding());
    System.out.println("Version: " + xmlDocument.getVersion());
    NodeList namespaceNodeList =
    xmlDocument.getElementsByTagNameNS("http://schemas.microsoft.com/office/word/2003/wordml","t");
    XMLElement namespaceElement17 = (XMLElement)namespaceNodeList.item(17);
    namespaceElement17.getFirstChild().setNodeValue("someString");

Maybe you are looking for

  • Planned material price in case of production order for sales order (MTO)

    Hi, In case of production orders created for sales order, the planned price for a component (BOM) material gets picked as per following:- 1. If there is no entry in EBEW for the component (that is, there is no previous GR for the component) for that

  • Depot Repair Order Flexibility after SO created

    Hi everyone, I have a client who's looking into using the Depot Repair functionality to handle all returns.  What we're finding so far is that everything works well so long as you know what you're going to do with the material before you create the s

  • Fillable Forms with Required Fields

    So I know how to create a fillable form, but is there a way to force a user to fill out all of the fields on the form before they can save the form?  Any help is much appreciated.

  • Mac FTP Server Help??

    Hi I have a whole bunch of movies and TV series' on my Macbook Pro. I am wanting to put them on my WD Mybook external HD. My question is; Is it possible to setup an FTP server to host the movies that are on my external Drive? If so how do I go about

  • Is it possible to export all of the fields for calendar events ? Specifically we're after the event creation date time.

    We need to find out when a calendar event was created. I have been unable to find this information in Lightning or any exports. From looking into the local.sqlite database file the cal_events table has a field called time_created. Unfortunately when