webMethods

webMethods

Join this online group to communicate across IBM product users and experts by sharing advice and best practices with peers and staying up to date regarding product enhancements.

 View Only
  • 1.  Convert Node to String

    Posted Mon January 23, 2012 10:58 AM

    Hello,

    I receive an XML data to WM flow service via HTTP. IS recognizes the data is XML and auromaticaly converts to com.wm.lang.xml.Document. I need to convert this to String or byte array for archiving and send for further processing.

    I am aware that xmlNodeToDocument and documentToXMLString can be used but I’d like to avoid the extra conversion to IData document.

    I convert to string using a java transformer, code which proofed several times, but in this case result document has incorrect hierachy. The code is shown below.

    Source:
    gls:GLSRequest






    </gls:GLSRequest>

    Result:

    <?xml version="1.0" encoding="UTF-8"?>
         <GLS:GLSREQUEST/>
    <HDR VER="1.0"/>
    <SNDR APPCD="ABC"/>
    <TADDR TADDR="10.0.0.1" TADDRTY="IPv4"/>
    <TADDR TADDR="wsi03" TADDRTY="HostName"/>
    

    Note that the result is a complete document not just a part of it.
    Elements are closed like it does not have any children. Indenting of the document shows that the hierarchy information is not lost completely.

    I guess there is something special about the com.wm.lang.xml.Document implementation which is not interpretted correctly by the transformer.

    Would you please give me a hint what is wrong here or how to do the conversion without converting to IData document?

    Thank you in advance
    Kind regards,
    Jan

    IS version: IS_7.1.2_Core_Fix35
    OS: RHEL 5.6
    Java: 1.5.0_15 (49.0) Java HotSpot™ 64-Bit Server VM

    Transformer code:
    IDataCursor pipelineCursor = pipeline.getCursor();
    com.wm.lang.xml.Document document = (com.wm.lang.xml.Document) IDataUtil.get( pipelineCursor, “node” );

    String xml = “”;
    try {
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer = factory.newTransformer();
    Result result = new StreamResult(new StringWriter());
    Source source = new DOMSource(document);
    transformer.transform(source, result);
    writer.close();
    xml = writer.toString();
    }
    catch (Exception e) {}
    IDataUtil.put( pipelineCursor, “xml”, xml );
    pipelineCursor.destroy();


    #webMethods
    #Integration-Server-and-ESB
    #Flow-and-Java-services


  • 2.  RE: Convert Node to String

    Posted Mon January 23, 2012 03:53 PM

    I would say better use builtin out of box rather than using custom Java for this conversion and debugging will be easier and it’s not worth if some thing can do it already for you and it’s reliable XML parser…Just my thoughts:


    #webMethods
    #Integration-Server-and-ESB
    #Flow-and-Java-services


  • 3.  RE: Convert Node to String

    Posted Mon January 23, 2012 04:44 PM

    I too would suggest just using the built-in services to convert to a string. Using a custom Java service to “avoid the extra conversion” seems odd–you’re still doing a conversion.

    Another option would be queryXMLNode to retrieve the XML string representation. Using XQL the query is /source()


    #Flow-and-Java-services
    #webMethods
    #Integration-Server-and-ESB


  • 4.  RE: Convert Node to String

    Posted Mon January 23, 2012 05:08 PM


  • 5.  RE: Convert Node to String

    Posted Tue January 24, 2012 07:30 AM

    Thank you a lot. queryXMLNode exactly suits my needs.


    #webMethods
    #Flow-and-Java-services
    #Integration-Server-and-ESB