Encoding problem with xml

Hello,
I'm trying to save on disk an xml with utf-8 codification and compressed with "gzip" algorithm. For some reasons, I have to use a BufferedWriter, then I must convert the byte[] to String.
Afterwards, I read this document and I try to decompress it and save on a String variable.
If I do all this process using utf-8 encoding, the decompressing process throws an exception: Not in GZIP format.
But if I use iso-8859-1, then everything works OK.
I don't understand why using iso works, and why using utf-8 does not work (when the webservice specification says that the xml documents are sent in utf-8).
The code is the following (the static "myCharset" is the key: when I set iso works, and setting utf-8 does not work):
public class testCompress
public static String xmlOutput     = "<?xml version=\"1.0\" encoding=\"utf-8\"?><soap:Envelope xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"><soap:Body><consultaCiudadesPorPaisResponse xmlns=\"http://tempuri.org/\"><consultaCiudadesPorPaisResult><xml funcion=\"ConsultaCiudadesPorPais\" xmlns=\"\"><ROK>TRUE</ROK></xml></consultaCiudadesPorPaisResult></consultaCiudadesPorPaisResponse></soap:Body></soap:Envelope>";
public static String myCharset     = "iso-8859-1";
// Writes the compressed document to disk.
public static void writeDocument() throws Exception
  BufferedWriter writer = null;
  try 
   // Compress the "xmlOutput" converting this string to bytes using "utf-8" as specification says (in "compress" method)
   // Afterwards, I convert this byte[] to String using "myCharset".
   String compressedFile = new String(CompressionService.compress(xmlOutput, "utf-8", "gzip", 8), myCharset);
   // And write to disk using "myCharset" as the encoding used by "OutputStreamWriter".
   writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("c:/cache"), myCharset), 8192);
   writer.write(compressedFile);
  catch (Exception e) { throw e; }
  finally
    if (writer != null)
     try { writer.close(); writer = null; } catch (IOException ioe) {}
// Reads the compressed document from disk.
public static byte[] readDocument() throws Exception
  BufferedReader reader = null;
  StringBuilder sb           = new StringBuilder();
  char[] buffer           = new char[8192];
  try
   // Open the file using "myCharset" for reading chars.
   reader = new BufferedReader(new InputStreamReader(new FileInputStream("c:/cache"), myCharset));
   int numchars = 0;
   while ((numchars = reader.read(buffer, 0, 8192)) >= 0) sb.append(buffer, 0, numchars);
   // And return the result as a byte[] encoded with "myCharset".
   return (sb.toString().getBytes(myCharset));
  catch (Exception e) { throw e; }
  finally
   if (reader != null)
    try { reader.close(); } catch (IOException ioe) {}
public static void main(String[] args) throws Exception
  writeDocument();
  byte[] file = readDocument();
  // DECOMPRESS FAILS IF myCharset = "utf-8", and works if myCharset = "iso-8859-1"
  System.out.println(com.vpfw.proxy.services.compress.CompressionService.decompress(file, "utf-8", "gzip", 8));
}

Okay, here's what's happening. You created a byte[] by encoding some text as UTF-8, then you ran that byte[] through a gzip deflater. The result is binary data that can only be understood by a gzip inflater; to any other software it just looks like garbage. Now you're taking a randomly-chosen encoding and pretending the binary data is really text that was encoded with that encoding.
Most encodings have limits on what kinds of input they can accept. For example, US-ASCII only uses the low-order seven bits of each byte; any byte with a value larger than 127 is invalid. When the encoder encounters such a byte, it inserts the standard replacement character, U+FFFD, in that spot. When you try to decode the string again as US-ASCII, the replacement character is what you see in that position; the original byte value is lost. In UTF-8, the bytes have to conform to [certain patterns|http://en.wikipedia.org/wiki/UTF-8#Description]; for example, any byte with a value greater than 127 has to be part of a valid two-, three- or four-byte sequence.
ISO-8859-1 is different. It's a single-byte encoding like ASCII, but it uses all eight bits of every byte. Furthermore, every possible byte value (0..255) maps to a character, so you can throw any random byte at it and tell it the byte represents a character, and it will believe you. Some of those values may map to control characters that would look like garbage if you displayed them, but they're valid. That means you can re-encode the string as ISO-8859-1 and get back the exact byte sequence you started with.
So that's why your code "works" when you use ISO-8859-1, but I strongly recommend that you find another way; making binary data masquerade as text is dangerously fragile. Why do you have to use a Writer anyway? Is it for transmission over a medium that only accepts text data? If so, you should use a Base64 encoder or similar tool that's designed for that purpose.

Similar Messages

  • Problem with XML on Linux

    hi everybody,
    I've a big problem with XML on Linux, in details I see my program stopping on Linux at the instruction
    XMLReader xr = XMLReaderFactory.createXMLReader("org.apache.crimson.parser.XMLReaderImpl");
    and it's strange because on Windows it runs and there aren't problems about permissions on files, does anyone knows what to do?
    thanks in advance!
    Stefano

    What happens on that line? I'm assuming you get some kind of error or exception.
    Make sure the JAR file for Crimson is in your classpath.

  • Problem with XML in APEX ORA-06502

    i, I have a problem with XML generation, I developed an application in APEX, and in a html page I have this process:
    declare
    l_XML varchar2(32767);
    begin
    select xmlElement
    "iva",
    xmlElement("numeroRuc",J.RUC),
    xmlElement("razonSocial", J.RAZON_SOCIAL),
    xmlElement("idRepre", J.ID_REPRE),
    xmlElement("rucContador", J.RUC_CONTADOR),
    xmlElement("anio", J.ANIO),
    xmlElement("mes", J.MES),
    xmlElement
    "compras",
    select xmlAgg
    xmlElement
    "detalleCompra",
    --xmlAttributes(K.ID_COMPRA as "COMPRA"),
    xmlForest
    K.COD_SUSTENTO as "codSustento",
    K.TPLD_PROV as "tpldProv",
    K.ID_PROV as "idProv",
    K.TIPO_COMPROBANTE as "tipoComprobante",
    to_char(K.FECHA_REGISTRO, 'DD/MM/YYYY') as "fechaRegistro",
    K.ESTABLECIMIENTO as "establecimiento",
    K.PUNTO_EMISION as "puntoEmision",
    K.SECUENCIAL as "secuencial",
    to_char(K.FECHA_EMISION, 'DD/MM/YYYY') as "fechaEmision",
    K.AUTORIZACION as "autorizacion",
    to_char(K.BASE_NO_GRA_IVA, 9999999999.99) as "baseNoGraIva",
    to_char(K.BASE_IMPONIBLE, 9999999999.99) as "baseImponible",
    to_char(K.BASE_IMP_GRAV, 9999999999.99) as "baseImpGrav",
    to_char(K.MONTO_ICE, 9999999999.99) as "montoIce",
    to_char(K.MONTO_IVA, 9999999999.99) as "montoIva",
    to_char(K.VALOR_RET_BIENES, 9999999999.99) as "valorRetBienes",
    to_char(K.VALOR_RET_SERVICIOS, 9999999999.99) as "valorRetServicios",
    to_char(K.VALOR_RET_SERV_100, 9999999999.99) as "valorRetServ100"
    xmlElement
    "air",
    select xmlAgg
    xmlElement
    "detalleAir",
    xmlForest
    P.COD_RET_AIR as "codRetAir",
    to_char(P.BASE_IMP_AIR, 9999999999.99) as "baseImpAir",
    to_char(P.PORCENTAJE_AIR, 999.99) as "porcentajeAir",
    to_char(P.VAL_RET_AIR, 9999999999.99) as "valRetAir"
    from ANEXO_COMPRAS P
    where P.ID_COMPRA = K.ID_COMPRA
    AND P.ID_INFORMANTE_XML = K.ID_INFORMANTE_XML
    xmlElement("estabRetencion1", K.ESTAB_RETENCION_1),
    xmlElement("ptoEmiRetencion1", K.PTO_EMI_RETENCION_1),
    xmlElement("secRetencion1", K.SEC_RETENCION_1),
    xmlElement("autRetencion1", K.AUT_RETENCION_1),
    xmlElement("fechaEmiRet1", to_char(K.FECHA_EMI_RET_1,'DD/MM/YYYY')),
    xmlElement("docModificado", K.DOC_MODIFICADO),
    xmlElement("estabModificado", K.ESTAB_MODIFICADO),
    xmlElement("ptoEmiModificado", K.PTO_EMI_MODIFICADO),
    xmlElement("secModificado", K.SEC_MODIFICADO),
    xmlElement("autModificado", K.AUT_MODIFICADO)
    from SRI_COMPRAS K
    WHERE K.ID IS NOT NULL
    AND K.ID_INFORMANTE_XML = J.ID_INFORMANTE
    AND K.ID BETWEEN 1 AND 25
    ).getClobVal()
    into l_XML
    from ANEXO_INFORMANTE J
    where J.ID_INFORMANTE =:P3_MES
    and J.RUC =:P3_ID_RUC
    and J.ANIO =:P3_ANIO
    and J.MES =:P3_MES;
    --HTML
    sys.owa_util.mime_header('text/xml',FALSE);
    sys.htp.p('Content-Length: ' || length(l_XML));
    sys.owa_util.http_header_close;
    sys.htp.print(l_XML);
    end;
    Now my table has more than 900 rows and only when I specifically selected 25 rows of the table "ANEXO_COMPRAS" in the where ( AND K.ID BETWEEN 1 AND 25) the XML is generated.+
    I think that the problem may be the data type declared "varchar2", but I was trying with the data type "CLOB" and the error is the same.+
    declare
    l_XML CLOB;
    begin
    --Oculta XML
    sys.htp.init;
    wwv_flow.g_page_text_generated := true;
    wwv_flow.g_unrecoverable_error := true;
    --select XML
    select xmlElement
    from SRI_COMPRAS K
    WHERE K.ID IS NOT NULL
    AND K.ID_INFORMANTE_XML = J.ID_INFORMANTE
    ).getClobVal()
    into l_XML
    from ANEXO_INFORMANTE J
    where J.ID_INFORMANTE =:P3_MES
    and J.RUC =:P3_ID_RUC
    and J.ANIO =:P3_ANIO
    and J.MES =:P3_MES;
    --HTML
    sys.owa_util.mime_header('text/xml',FALSE);
    sys.htp.p('Content-Length: ' || length(l_XML));
    sys.owa_util.http_header_close;
    sys.htp.print(l_XML);
    end;
    The error generated is ORA-06502: PL/SQL: numeric or value error+_
    Please I need your help. I don`t know how to resolve this problem, how to use the data type "CLOB" for the XML can be generate+

    JohannaCevallos07 wrote:
    Now my table has more than 900 rows and only when I specifically selected 25 rows of the table "ANEXO_COMPRAS" in the where ( AND K.ID BETWEEN 1 AND 25) the XML is generated.+
    I think that the problem may be the data type declared "varchar2", but I was trying with the data type "CLOB" and the error is the same.+
    The error generated is ORA-06502: PL/SQL: numeric or value error+_
    Please I need your help. I don`t know how to resolve this problem, how to use the data type "CLOB" for the XML can be generate+The likeliest explanation for this is that length of the XML exceeds 32K, which is the maximum size that <tt>htp.p</tt> can output. A CLOB can store much more than this, so it's necessary to buffer the output as shown in +{message:id=4497571}+
    Help us to help you. When you have a problem include as much relevant information as possible upfront. This should include:
    <li>Full APEX version
    <li>Full DB/version/edition/host OS
    <li>Web server architecture (EPG, OHS or APEX listener/host OS)
    <li>Browser(s) and version(s) used
    <li>Theme
    <li>Template(s)
    <li>Region/item type(s) (making particular distinction as to whether a "report" is a standard report, an interactive report, or in fact an "updateable report" (i.e. a tabular form)
    And always post code wrapped in <tt>\...\</tt> tags, as described in the FAQ.
    Thanks

  • I am facing a new problem with xml schema, plz help me

    Hi @,
    I am facing a problem with xml schema validation. Below is my code.
    public void initialize(String cfgFileName) {
    try {
    try {
    DOMParserWrapper parser = (DOMParserWrapper)Class.forName("dom.wrappers.DOMParser").newInstance();
    parser.setFeature( "http://apache.org/xml/features/dom/defer-node-expansion",true );
    parser.setFeature( "http://xml.org/sax/features/validation",true);
    parser.setFeature( "http://xml.org/sax/features/namespaces",true );
    parser.setFeature( "http://apache.org/xml/features/validation/schema",true );
    parser.setFeature( "http://apache.org/xml/features/validation/schema-full-checking",true );
    Document document = parser.parse(cfgFileName);
    System.out.println("Vijay .. code .. damar\n");
    }catch (org.xml.sax.SAXParseException spe) {
    } catch (org.xml.sax.SAXNotRecognizedException ex ){
    } catch (org.xml.sax.SAXNotSupportedException ex ){
    } catch (org.xml.sax.SAXException se) {
    if (se.getException() != null)
    se.getException().printStackTrace(System.err);
    else
    se.printStackTrace(System.err);
    }catch (Exception e) {
    System.out.println("Caught unknown exception : \n");
    e.printStackTrace(System.err);
    System.out.println("Vijay .. code .. success\n");
    DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
    //docBuilder.setErrorHandler(myErrorHandler);
    cfg = docBuilder.parse(new File(cfgFileName));
    cfg .getDocumentElement ().normalize ();
    } catch (Exception e) {
    e.printStackTrace();
    In the above code I am parsing the xml file and i am doing schema validation. Schema validation is proper and it is validating correctly. Only problem is that, It is validating and showing error correctly correctly but it is not catching that error.
    For clear understanding I am printing one statement before parsing and after parsing.
    SYSTEM.OUT.PRINTLN("Vijay .. code .. damar\n") this is before parsing
    SYSTEM.OUT.PRINTLN("Vijay .. code .. success\n") this is after parsing
    Here what is happening means, It is validating correctly and showing error :
    [Error] nw_layout-new.xml:800:97: Datatype error: Value 'y' does not match regular expression facet 'yes|no'..
    Vijay .. code .. damar
    Vijay .. code .. success
    Here it is showing error and still continueing not catching.
    Plz give solution for this.
    Thanks
    vijay K

    Hello dipthebe,
    Check out the articles below go through troubleshooting steps for your iPhone when the screen is unresponsive. You may want to try and restore your iPhone as a new device and then test out what happens when you miss a call to see if the issue is still present afterwards.
    iPhone, iPad, iPod touch: Troubleshooting touchscreen response
    http://support.apple.com/kb/ts1827
    Use iTunes to restore your iOS device to factory settings
    http://support.apple.com/kb/HT1414
    Regards,
    -Norm G.

  • Problem with XML loading and xmlns

    I'm having a problem with loading an XML file that was created by Filemaker.  Filemaker will output an XML file using one of two different grammars.  One outputs in a mostly standard form that I can use with one glitch.  Flash CS4 AS3 seems to have a problem with the xmlns in one of the nodes.
    Specifically:
    <FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">
    If I remove the xmlns="http://www.filemaker.com/fmpdsoresult" the file loads properly and I can access the various fields with no problem.  However, when I leave the xmlns=... in, it will trace out the XML properly but I can't access the fields using the code listed below.  This is driving me crazy!
    With the xmlns part in the XML file I get the following error when it tries to load the thumbnail files:
    TypeError: Error #1010: A term is undefined and has no properties.
    I need to have it so that the user can enter/edit data and simply output the XML file from Filemaker and then Flash will load up the unaltered XML file and show the info requested by the user.  That is to say I could have the user open the XML file in a word processing application and have them delete the xmlns..., but that is rather cumbersome and not very user friendly.
    I've tried every xml.ignore function I could find but it doesn't help.  Hopefully someone out there can help
    Thanks,
    -Mark-
    Partial XML:
    XML From Filemaker Export:
    <?xml version="1.0" encoding="UTF-8" ?>
    <!-- This grammar has been deprecated - use FMPXMLRESULT instead -->
    <FMPDSORESULT xmlns="http://www.filemaker.com/fmpdsoresult">
      <ERRORCODE>0</ERRORCODE>
      <DATABASE>Sport.fp7</DATABASE>
      <LAYOUT></LAYOUT>
      <ROW MODID="1" RECORDID="1">
        <FirstName>Mark</FirstName>
        <LastName>Fowle</LastName>
        <Sport>Sailing</Sport>
        <Medal>None</Medal>
        <CourseOfStudy>Design</CourseOfStudy>
        <Year>1976-1978</Year>
        <HomeState>California</HomeState>
        <ImageName>93</ImageName>
      </ROW>
    </FMPDSORESULT>
    AS3 Code:
    import fl.containers.UILoader;
    var aPhoto:Array=new Array(ldPhoto_0,ldPhoto_1,ldPhoto_2,ldPhoto_3,ldPhoto_4,ldPhoto_5);
    var toSet:int=10;//time out set time
    var toTime:int=toSet;
    var photoPerPage:int=6;
    var fromPos:int=photoPerPage;
    var imgNum:Number;
    //var subjectURL:URLRequest=new URLRequest("testData_FM8.xml");
    var subjectURL:URLRequest=new URLRequest("Sports.xml");
    var xmlLoader:URLLoader=new URLLoader(subjectURL);
    xmlLoader.addEventListener(Event.COMPLETE, xmlLoaded);
    var subjectXML:XML = new XML();
    subjectXML.ignoreWhitespace=true;
    subjectXML.ignoreComments=true;
    subjectXML.ignoreProcessingInstructions=true;
    function xmlLoaded(evt:Event):void {
        subjectXML=XML(xmlLoader.data);
        if (root.loaderInfo.bytesTotal==root.loaderInfo.bytesLoaded) {
            removeEventListener(Event.ENTER_FRAME, xmlLoaded);
            trace("XML Data File Loaded");
            trace(subjectXML);
        } else {
            trace("File not Found");
        imgNum=2;//subjectXML.ROW.length;
        trace(subjectXML);
        loadThumb(0);
    function loadThumb(startPos:int):void {
        var count:Number=aPhoto.length;
        trace(subjectXML.DATABASE);
        for (var i=0; i<count; i++) {
        try{
            aPhoto[i].source="images/"+subjectXML.ROW[startPos+i].ImageName+"_main.jpg";
        }catch (e:Error){
            trace(e);
            aPhoto[i].mouseChildren=false;
            aPhoto[i].addEventListener(MouseEvent.MOUSE_DOWN, onThumbClick);
        trace("Current mem: " + System.totalMemory);
        ldAttract.visible=false;
    function unloadThumb():void {
        var count:Number=aPhoto.length;
        for (var i=0; i<count; i++) {
            aPhoto[i].unload();
            aPhoto[i].removeEventListener(MouseEvent.MOUSE_DOWN, onThumbClick);
        trace("Current mem: " + System.totalMemory);
    function onThumbClick(evt:MouseEvent) {
        var i:Number;
        //trace("Thumbnail Clicked " + evt.target.name);
        i=findPos(evt.target.name);
        ldLrgPhoto.source="images/"+subjectXML.ROW[i+fromPos].LOCAL_OBJECT_ID+"_main.jpg";
        ldLrgPhoto.visible=true;
        btnPrev.visible=false;
        btnNext.visible=false;
        gotoAndStop("showPhoto");
    function findPos(thumb:String):Number {
        var pos:Number;
        var count:Number=aPhoto.length;
        for (var i:Number=0; i<count; i++) {
            if (thumb==aPhoto[i].name) {
                pos=i;
        return pos;

    Hi,
    I was trying to use xml namespaces, so in my application I receive an XML file from the server. The file has a namespace, so when I parse the file I need to specify the namespace:
    I got the following piece of xml:
    <ls:exchange xmlns:ls=".../tsw" xmlns:tm="http://kxa">
        <ls:projects>
             <tm:annotation id="" date="" action="getprojects" status="responseok"/>         
        <ls:project id="" name="proj" description="..." owner="asss"  release="2" />
            <ls:projectV  id="" version="" creationdate="" modificationdate=""/ >
        </ls:project>
    </ls:projects>
    </ls:exchange>
    and the following code
    <mx:VBox label="WELCOME" verticalScrollPolicy="off" horizontalScrollPolicy="off">
          <mx:Tree id="tree" dataProvider="{srv.lastResult.project}" labelField="@name"  width="300" height="100%" itemOpen="itemOpenEvt(event);" />
    </mx:VBox>
    So i want to display the content of the xml (project nodes”) in a tree view, but i don’t know how to includes the namespace"ls:" in the data provider “srv.lastResult.project”. can u help me it’s urgent.
    sincerly
    Celine

  • Problem with XML Parser For Java V2

    Get message:
    <Line 5, Column 40>: XSD-2021: (Error) Element not completed: 'doesNotWork'
    Parser Exception: Element not completed: 'doesNotWork'
    Element 'doesNotWork' is defined the same as 'works' except 'doesNotWork' uses a ref="" rather than defining element inline.
    This appears to be a bug in the parser.
    XML:
    <?xml version ="1.0"?>
    <example>
    <works anAttribute="something"/>
    <doesNotWork anAttribute="something"/>
    </example>
    Schema:
    <?xml version = "1.0" encoding = "UTF-8"?>
    <xsd:schema xmlns:xsd = "http://www.w3.org/2000/10/XMLSchema">
    <xsd:element name = "example">
    <xsd:complexType>
    <xsd:sequence>
    <xsd:element name="works">
    <xsd:complexType>
    <xsd:attribute name = "anAttribute" use = "required" type = "xsd:string"/>
    </xsd:complexType>
    </xsd:element>
    <xsd:element ref = "doesNotWork"/>
    </xsd:sequence>
    </xsd:complexType>
    </xsd:element>
    <xsd:element name = "doesNotWork">
    <xsd:complexType>
    <xsd:attribute name = "anAttribute" use = "required" type = "xsd:string"/>
    </xsd:complexType>
    </xsd:element>
    </xsd:schema>

    Hi all,
    I am getting the same error. Is the schema parser being actively suppported. From replies to problems, it does not seem like it is. Also I am still having problems with 'required', ID attributes etc. Is there comprehensive documentation of what is and what is not supported.
    Any help appreciated
    Thanks
    Venu

  • Encoding problem with XSL

    Hi,
    I have problems when printing the result of processing XML with an XSL that contains locale specific chars.
    Here is a sample:
    XML :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <ListePatients>
    <Patient>
    <Nom>Zeublouse</Nom>
    <NomMarital/>
    <Prinom>Agathe</Prinom>
    </Patient>
    <Patient>
    <Nom>Stick</Nom>
    <NomMarital>Laiboul</NomMarital>
    <Prinom>Ella</Prinom>
    </Patient>
    <Patient>
    <Nom>`ihnotvy</Nom>
    <NomMarital/>
    <Prinom>Jacques</Prinom>
    </Patient>
    </ListePatients>
    XSL :
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:output method="html"/>
    <xsl:template match="*|/"><xsl:apply-templates/></xsl:template>
    <xsl:template match="text()|@*"><xsl:value-of select="."/></xsl:template>
    <xsl:template match="/">
    <HTML>
    <HEAD>
    <META http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
    <TITLE>Liste de patients</TITLE>
    </HEAD>
    <BODY>
    <xsl:apply-templates select='ListePatients'/>
    </BODY>
    </HTML>
    </xsl:template>
    <xsl:template match='ListePatients'>
    <TABLE>
    <xsl:for-each select='Patient'>
    <xsl:sort select='Nom' order='ascending' data-type='text'/>
    <TR TITLE='`ihnotvy'>
    <TD> <xsl:value-of select='Nom'/> </TD>
    <TD> <xsl:value-of select='NomMarital'/> </TD>
    <TD> <xsl:value-of select='Prinom'/> </TD>
    </TR>
    </xsl:for-each>
    </TABLE>
    </xsl:template>
    </xsl:stylesheet>
    Test program (from Oracle sample) :
    import java.net.URL;
    import java.io.*;
    import oracle.xml.parser.v2.DOMParser;
    import oracle.xml.parser.v2.XMLDocument;
    import oracle.xml.parser.v2.XMLDocumentFragment;
    import oracle.xml.parser.v2.XSLStylesheet;
    import oracle.xml.parser.v2.XSLProcessor;
    public class XSLSampleOTN
    * Transforms an xml document using a stylesheet
    * @param args input xml and xml documents
    public static void main (String args[]) throws Exception
    DOMParser parser;
    XMLDocument xmldoc, xsldoc, out;
    URL xslURL;
    URL xmlURL;
    try
    if (args.length != 2)
    // Must pass in the names of the XSL and XML files
    System.err.println("Usage: java XSLSampleOTN xslfile xmlfile");
    System.exit(1);
    // Parse xsl and xml documents
    parser = new DOMParser();
    parser.setPreserveWhitespace(true);
    // parser input XSL file
    xslURL = DemoUtil.createURL(args[0]);
    parser.parse(xslURL);
    xsldoc = parser.getDocument();
    // parser input XML file
    xmlURL = DemoUtil.createURL(args[1]);
    parser.parse(xmlURL);
    xmldoc = parser.getDocument();
    // instantiate a stylesheet
    XSLStylesheet xslSS = new XSLStylesheet(xsldoc, xslURL);
    XSLProcessor processor = new XSLProcessor();
    // display any warnings that may occur
    processor.showWarnings(true);
    processor.setErrorStream(System.err);
    // Process XSL
    XMLDocumentFragment result = processor.processXSL(xslSS, xmldoc);
    // print the transformed document
    result.print(System.out);
    // an other way to print, it doesn't print the same !!!!
    processor.processXSL(xslSS, xmldoc, System.out);
    catch (Exception e)
    e.printStackTrace();
    When printing the transformed document with DocumentFragment.print() it work fine but when using processXSL(xslSS, xmldoc, System.out) it don't works for locale specific chars and a second <META> balise appears, Why ?
    with DocumentFragment.print(), it's Ok :
    <HTML>
    <HEAD>
    <META http-equiv="Content-Type"
    content="text/html; charset=iso-8859-1"/>
    <TITLE>Liste de patients</TITLE>
    </HEAD>
    <BODY>
    <TABLE>
    <TR TITLE="`ihnotvy">
    <TD>`ihnotvy</TD>
    <TD/>
    <TD>Jacques</TD>
    </TR >
    <TR TITLE="`ihnotvy">
    <TD>Stick</TD>
    <TD>Laiboul</TD>
    <TD>Ella</TD>
    </TR>
    <TR TITLE="`ihnotvy">
    <TD>Zeublouse
    </TD>
    <TD/>
    <TD>Agathe</TD>
    </TR>
    </TABLE>
    </BODY>
    </HTML>
    With processXSL(xslSS, xmldoc, System.out), it's not Ok :
    <HTML>
    <HEAD>
    <META http-equiv="Content-Type" content="text/html">
    <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <TITLE>Liste de patients</TITLE>
    </HEAD>
    <BODY>
    <TABLE>
    <TR TITLE="C C)C(C.C/C4C6C9">
    <TD>C C)C(C.C/C4C6C9</TD>
    <TD></TD>
    <TD>Jacques</TD>
    </TR>
    <TR TITLE="C C)C(C.C/C4C6C9">
    <TD>Stick</TD>
    <TD>Laiboul</TD>
    <TD>Ella</TD>
    </TR>
    <TR TITLE="C C)C(C.C/C4C6C9">
    <TD>Zeublouse</TD>
    <TD></TD>
    <TD>Agathe</TD>
    </TR>
    </TABLE>
    </BODY>
    </HTML>
    TIA
    Didier
    null

    Two other problems with XSL and print:
    first one :
    XSL :
    <SCRIPT langage="Javascript" type="text/javascript" src="scripts/erreur.js"></SCRIPT>
    DocumentFragment.print() produce :
    <SCRIPT langage="Javascript" type="text/javascript" src="scripts/erreur.js"/>
    => IE5.5 don't load the file !!, it required syntaxe like <SCRIPT ...></SCRIPT> to load.
    the second one :
    XSL:
    <TD><IMG src="images/menuleft.gif"/></TD>
    DocumentFragment.print() produce :
    <TD>
    <IMG src="images/menuleft.gif">
    </TD>
    processXSL(xslSS, xmldoc, System.out) produce :
    <TD><IMG src="images/menuleft.gif">
    </TD>
    Why a cariage return ?? it cause prisentation failure when you want to specifie the size off the cell !!
    TIA
    Didier
    null

  • Problems with xml and j2sdk-1.5

    Hello everyone,
    until i upgraded my version of the jdk (from 1.4.2 to 1.5.0) everything was working fine concerning xml-processing. Now i am having problems with at least two methods that were working just fine before the upgrade.
    public void createRootElement(String s) {
            Element root = doc.createElement(s);
            doc.appendChild(root);
    //that was the first one
    public void addFirstChildElement(String element, String node) {
            Element root = doc.getDocumentElement();
            System.out.println("Rootelement: "+root.toString()+" Element: "+element+" node: "+node);
            try {
                Element nextElement = doc.createElement(element);
                System.out.println("Nextelement "+nextElement.toString());
                root.appendChild(nextElement);
                nextElement.appendChild(doc.createTextNode(node));
            catch (DOMException e) {
                e.printStackTrace();
    //the second onethe problem is now that for some reasong nothing is written into the xml document except "<?xml version='1.0' encoding='UTF-8' ?>".
    The result of the System.out.println command in the second method is:
    Rootelement: [Preferences: null] Element: DefaultLanguage node: de
    As i mentioned already everything was fine before the upgrade, but now i really don't have a clue what's wrong...
    Any ideas?
    Thanks in advance...

    It seems that the toSring() method doesn't print out the complete XMl structure. anymore.
    Only some "debug" information is printed.
    You have to use a transfomer (text transfomer) to print out the XML in text form...

  • Encoding problem with Application adapter for OEBS

    Hello All!
    We going to pass value via app adapter from EBS Forms to Content Server page. Link to documentation Configuring the Managed Attachments Solution - 11g Release 1 (11.1.1)
    We have done all setting, and this function is working now .
    It is good working with English letters and numbers, but when we try to use Cyrillic we have a problem with Encoding in Content server page.
    Data on Oebs table use ''CL8ISO8859P5'', but service xml for adapter has allays a title with  charset=utf-8
    System are:
    OEBS 12.1.3
    Webcenter Content 11.1.1.6
    Adapter 11.1.1.6 + patch 16463891
    Could you help us?

    Hi Denis ,
    Try this solution :
    1) Log on to the APPS EBS schema and re-create the AXF_SOAPCall function using the following SQL:
    create or replace
    function AXF_SOAPCall (url varchar2, soapmsg varchar2, secure varchar2, walletid varchar2, walletpass varchar2) return varchar2 as
    http_req utl_http.req;
    http_resp utl_http.resp;
    response_env varchar2(32767);
    v_newcharset VARCHAR2(40 BYTE) :='UTF8';
    v_Dbcharset VARCHAR2(40 BYTE);
    v_Raw1 RAW(32767);
    v_Stmt1 VARCHAR2(6000 BYTE);
    begin
    v_newcharset := 'AMERICAN_AMERICA.'|| v_newcharset ;
    v_Dbcharset := 'AMERICAN_AMERICA.'||utl_i18n.map_charset(fnd_profile.value('ICX_CLIENT_IANA_ENCODING'),0,1);
    v_Raw1 := UTL_RAW.CAST_TO_RAW (soapmsg);
    v_Raw1 := UTL_RAW.CONVERT (v_Raw1,v_newcharset,v_Dbcharset);
    if ( secure = 'true' or secure = 'TRUE' ) then
    utl_http.set_wallet (walletid, walletpass);
    end if;
    http_req := utl_http.begin_request(url , 'POST', utl_http.HTTP_VERSION_1_1);
    utl_http.set_header(http_req, 'Content-Type', 'text/xml; charset=utf-8');
    utl_http.set_header(http_req, 'Content-Length', utl_raw.length(v_Raw1));
    utl_http.write_raw(http_req, v_Raw1);
    http_resp := utl_http.get_response(http_req);
    utl_http.read_text(http_resp, response_env);
    dbms_output.put_line('Response: ');
    dbms_output.put_line(response_env);
    utl_http.end_response(http_resp);
    return response_env;
    end;
    2) Log on to the EBS and confirm that you can now open the Managed Attachments window for all records & forms, regardless of the use (& length) of multibyte string values.
    This was caused by multibyte characters used with non UTF-8 language strings .
    I presumed that you are seeing that when "Managed Attachments" option through the ZOOM button from an E-Business Suite (EBS) forms, nothing happens.If you have a support id then check the following note : 1409703.1 from MyOracleSupport portal.
    Hope this helps.
    Thanks,
    Srinath

  • Problem with XML SQL  JDBC adapter

    Hello All.
    I have quite strange problem with my PI.
    Whole scenario is SOAP -> JDBC, asynchronous. Everything works fine on DEV server. After transporting objects (using CTS) to QA env I'm getting this error:
    JDBC Message processing failed, due to Error processing request in sax parser:
    No 'action' attribute found in XML document
    (attribute "action" missing or wrong XML structure)
    But document seems to be correct. I've compared it to DEV server documents - they are identical. What could be wrong??
    Document looks like this:
    <ns2:BIPMessage xmlns:ns2="http://mynamespace.com/xi/sn"
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <synchSlLok>
       <STATEMENTNAME>
         <SYNCH_SL_LOK ACTION="INSERT">
            <TABLE>SYNCH_SL_LOK</TABLE>
             <ACCESS>
                <ID_TRANS>22050</ID_TRANS>
                <ID_LOK>1234</ID_LOK>
                <ID_CBK>1000050911</ID_CBK>
                <NR_LOK>1234</NR_LOK>
                <OPIS_LOK>12312312312312</OPIS_LOK>
                <TYP>D</TYP>
                <OPERACJA>U</OPERACJA>
              </ACCESS>
          </SYNCH_SL_LOK>
        </STATEMENTNAME>
      </synchSlLok>
      </ns2:BIPMessage>
    TIA
    Best Regads
    Maciej

    Hi,
    i was also facing the same error few days back in a JDBC -RFC-JDBC Synchronous scenario. In that scenario, i was using 2 modules in JDBC sender module tab. It was working fine. later i change polling interval and then i started getting same error. it happened coz of sequence of Module got changed somehow.
    So please check in Receiver JDBC adapter and SOAP sender adapter CC  if anything is changed. If this scenario is working in DEV as it is then it should work after transport.
    Else have a look here
    Re: attribute "action" missing or wrong XML structure
    JDBC - No 'action' attribute found in XML document - error
    Regards
    Aashish Sinha
    Edited by: Aashish Sinha on Mar 15, 2011 10:42 AM

  • Problem with Xml exporter

    Hi All,
    Thanks in advance for ur warm replies.
    I am exporting personalizations which i did but iam facing problems with this.
    Please help me on this issue.
    Steps i follwed.
    Step1: exec jdr_utils.listcustomizations('/oracle/apps/ego/item/eu/webui/EGOITEMATTRIBUTEPGL');
    It displays me the customizations which i did as follows
    /oracle/apps/ego/item/eu/webui/customizations/responsibility/24091/EGOITEMATTRIBUTEPGL
    Pl/sql procedure completed successfully.
    Step2: Iam now at command prompt on java_top and i run the following command
    java oracle.jrad.tools.xml.exporter.XMLExporter
    /oracle/apps/ego/item/eu/webui/customizations/responsibility/24091/EGOITEMATTRIBUTEPGL
    -username apps -password <mypwd> \
    -dbconnection "(description=(address_list=(address=(protocol=tcp)(host=<host>)(port=<myport>)))(connect_data=(sid=<mysid>)))" \
    -rootdir "/oracle/apps/ego/item/eu/webui/EGOITEMATTRIBUTEPGL'"
    * I don't know exactly what is root directory here. which path i need to provide here.*
    Error: No such file or directory.
    Thanks and Regards
    Zaheer

    Zaheer,
    <output_dir> - (Required) Output directory where the exported xml file structure is to be stored. You may set this to any directory, however, we recommend that you export your packages or XML files to $APPL_TOP/personalizations.
    If you run the export tool for the package
    /oracle/apps/ak/dem/webui/customizations/site/0/REQORDERSTATUSPAGE and specify -rootdir
    $APPL_TOP/personalizations, the xml file is saved as
    $APPL_TOP/personalizations/oracle/apps/ak/dem/webui/customizations/site/0/REQORDERSTATUS PAGE.xml.
    In your case define rootdir as rootdir "/oracle/apps/ego/item/eu/webui ".
    Thanks
    --Anil                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Jbuilder compiler problem with xml DOM - please help.

    my problem is that I am using jbuilder 4 professional to compile/run my code.
    However I want to use the XML DOM but jbuilder does not appear to support the necessary packages for use with XML.
    How can I get round this.
    Can I compile instead from the command line - I am using JDK1.4 which supports the java xml packages necessary. Or is there a way of adding the necessary files to my project?
    thanks, B

    Add the required jar files to your project properties->classpath in JBuilder
    The only problem is that. I have been using JBuilder without any problems.

  • Encoding Problems with WRT300N V2

    Hello guys,
    i have following problem:
    I have a WRT300n Router and it seems to have problems with WPA2 encoding. I have 2 different deviceses (a SMC Ethernet Bridge and a PS3) trying to connect to my Linksys wireless router. No chance in WPA2 mode but when I try in WEP-Mode, both devicec can connect to it.
    Are there known encoding problems?
    Any idea what i can do?

    It is able to use. But my router always drops the connection. WEP is no problem, but ... what about low security and Wirless N is not enabled ??

  • Problems with XML Instance Generator

    Hi.
    I still have problems with the XML instance Generator. I had the problem other people have commented here before:
    parsing a grammar: newspaper.dtd
    generating document #1
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xml/serialize/XMLSerializer
    at com.sun.msv.generator.Driver.run(Unknown Source)
    at com.sun.msv.generator.Driver.main(Unknown Source)
    I read somewhere that xercesImpl.jar was necessary. I have downoladed a version of it of about 3 Mb size, and now the message I receive is the following:
    parsing a grammar: newspaper.dtd
    generating document #1
    Exception in thread "main" java.lang.NoClassDefFoundError: org/w3c/dom/ranges/DocumentRange
    at java.lang.ClassLoader.defineClass0(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:502)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:123)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:250)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:54)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:193)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:186)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:299)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:272)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:255)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:315)
    at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.newDocume
    nt(DocumentBuilderImpl.java:206)
    at com.sun.msv.generator.Driver.run(Unknown Source)
    at com.sun.msv.generator.Driver.main(Unknown Source)
    after executing the command: java -jar xmlgen.jar -dtd newspaper.dtd
    All .jar files coming with the xmlgen.zip are in the same directory where I type the command. Does anybody know what am I doing wrong?
    Thanks to all.

    Hi,
    I am also getting the same problem.
    Thanks
    -Manoj

  • Problems with XML-RPC

    Hi everybody.
    Sorry, I've got a french accent, then if you don't understand, dont' be worry ^^
    I try using the apache's xmpl-rpc package, and I have got some problems with the xml-rpc client.
    Here my source :
    public interface ICalculator {
         public int add(int i1, int i2);
         public int subtract(int i1, int i2);
    public class Calculator implements ICalculator {
         public int add(int i1, int i2) {
              return i1 + i2;
         public int subtract(int i1, int i2) {
              return i1 - i2;
    import org.apache.xmlrpc.server.PropertyHandlerMapping;
    import org.apache.xmlrpc.server.XmlRpcServer;
    import org.apache.xmlrpc.server.XmlRpcServerConfigImpl;
    import org.apache.xmlrpc.webserver.WebServer;
    public class Server {
    private static final int port = 8080;
    public static void main(String[] args) throws Exception {
    WebServer webServer = new WebServer(port);
    XmlRpcServer xmlRpcServer = webServer.getXmlRpcServer();
    PropertyHandlerMapping phm = new PropertyHandlerMapping();
    phm.addHandler(Calculator.class.getName(), Calculator.class);
    phm.addHandler(ICalculator.class.getName(), ICalculator.class);
    xmlRpcServer.setHandlerMapping(phm);
    XmlRpcServerConfigImpl serverConfig =
    (XmlRpcServerConfigImpl) xmlRpcServer.getConfig();
    serverConfig.setEnabledForExtensions(true);
    serverConfig.setContentLengthOptional(false);
    webServer.start();
    System.out.println("Serveur XML-RPC is ready");
    import org.apache.xmlrpc.client.XmlRpcClient;
    import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
    import org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory;
    import org.apache.xmlrpc.client.util.ClientFactory;
    public class Client {
    public static void main(String[] args) throws Exception {
    // create configuration
    XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
    config.setServerURL(new URL("http://127.0.0.1:8080/xmlrpc"));
    config.setEnabledForExtensions(true);
    config.setConnectionTimeout(60 * 1000);
    config.setReplyTimeout(60 * 1000);
    XmlRpcClient client = new XmlRpcClient();
    System.out.println("Connection");
    // use Commons HttpClient as transport
    client.setTransportFactory(
    new XmlRpcCommonsTransportFactory(client));
    // set configuration
    client.setConfig(config);
    ClientFactory factory = new ClientFactory(client);
    ICalculator calc = (ICalculator)factory.newInstance(ICalculator.class); //Problems here !!!
    System.out.println("Calculing");
    System.out.println("Result : " + calc.add(2, 3));
    And the error is:
    Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/httpclient/HttpException
         at org.apache.xmlrpc.client.XmlRpcCommonsTransportFactory.getTransport(XmlRpcCommonsTransportFactory.java:31)
         at org.apache.xmlrpc.client.XmlRpcClientWorker.execute(XmlRpcClientWorker.java:53)
         at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:166)
         at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:136)
         at org.apache.xmlrpc.client.XmlRpcClient.execute(XmlRpcClient.java:125)
         at org.apache.xmlrpc.client.util.ClientFactory$1.invoke(ClientFactory.java:104)
         at $Proxy0.add(Unknown Source)
         at projet.Client.main(Client.java:45)
    Can you help please ?

    The problem is not related to your code, but it seems that there is a missing jar which contains the class org.apache.commons.httpclient.HttpException or perhaps the jar isn't included in your CLASSPATH.
    The jar seems to be commons-httpclient.jar you can found at http://jakarta.apache.org/commons/httpclient

Maybe you are looking for

  • Upgrading Power PC G3 from 8.6 to 9.0 or 10.4

    The machine has 512RAM and the latest Firmware update. It only has a CD drive, well, I "put a DVD drive in it but it only recognizes itself as having a CD drive." 1st Question: How do I get the machine to recognize that it has a DVD drive? 2nd Questi

  • Swf won't play live

    My shockwave files play fine in dreamweaver when I test them in the browsers but once I uploaded them they are not showing up I have no idea what I am doing wrong. My site just went live and looks horrible without the swf files it is: www.dmaexpressi

  • I would like to copy my entire iMac hard drive onto an external hard drive,

    i would like to comy about 15000 pics, or the entire hard drives contents onto a seagate external hard drive, is there a simple way?

  • Need XML Suggestions

    I have an 18 page word document used in our process that I am automating using Designer 7. The word document is an 18 page 'table' that has 7-8 columns, and 100 or more rows. I have a couple of methods for creating this in Forms Designer. The first i

  • Help in service tax code

    Hiii experts... my client faced an issue in service tax code e.g s1( service tax+edu cess+higher edu).. i went to ftxp... in accounting key st1 i assigned 12%,(condtion -jstx) ec-2%(condtion-jec5)  and ec3-1(condition-jes3)... all went good and the t