Invalid XML character in web service answer of MS Exchange

Hello Forum!
We have to look up contacts in the global address list of a Microsoft Exchange server.
The current solution uses the web services that have been introduced in version 2007 of MS Exchange.
Unfortunately some records returned by the MS Server cause a javax.xml.stream.XMLStreamException. The Exception
tells us that a parser error occurred. The Exception says:
Message: Character reference "&#x7" is an invalid XML character.
The Java classes used for accessing the Exchange web services are generated using the jaxws plugin and the application
is running on the Glassfish application server v2 ur1.
The only solution we can think of right now is to access the XML stream returned by the Exchange server before it is handed over
to the parser in order to replace the invalid characters.
Can anyone point me to some documentation or give me an example of how to intercept the XML parsing process used by the jaxws
component?
Any other ideas for a solution are of course also appreciated.
Thanks for your help in advance,
Henning Malzahn

hm@collogia wrote:
In addition to that MS is not very responsive when it comes to Java questions.Yes, but "Your software is producing malformed XML" is not a Java question.
I can imagine that filtering the stream isn't very easy - are you able to provide some links to additional
information that can help us getting started in that direction?A subclass of FilterInputStream whose read() method calls the superclass's read() method a second time when the input is between 0 and 19, or whatever are the invalid XML characters?

Similar Messages

  • Invalid characters when consuming web service

    Morning all,
    I am using Apache Axis 1.3 (yes, slightly old version) to consume a Microsoft SharePoint web service. The problem I am finding is that the returned XML contains an invalid XML character which is causing Axis to throw an exception. I have no control over the SharePoint web service so I am wondering if it is possible to somehow obtain the XML returned from SharePoint so that I can pre-process it, removing all the bad characters, before then letting Axis process as normal. Or perhaps there is a more elegant solution?
    This snippet of code shows how I am currently calling the web service :
    String endpoint = listSite.endsWith("/") ? listSite + "_vti_bin/Lists.asmx" : listSite + "/_vti_bin/Lists.asmx";
    org.apache.axis.client.Service service = new org.apache.axis.client.Service();
    org.apache.axis.client.Call call = (org.apache.axis.client.Call) service.createCall();
    call.setProperty(Call.SOAPACTION_USE_PROPERTY, new Boolean(true));
    call.setProperty(Call.SOAPACTION_URI_PROPERTY, "http://schemas.microsoft.com/sharepoint/soap/GetListItems");
    call.setSOAPVersion(org.apache.axis.soap.SOAPConstants.SOAP11_CONSTANTS);
    call.setOperationName(new javax.xml.namespace.QName("http://schemas.microsoft.com/sharepoint/soap/", "GetListItems"));
    call.setTargetEndpointAddress(new java.net.URL(endpoint));
    call.addParameter(new javax.xml.namespace.QName("http://schemas.microsoft.com/sharepoint/soap/", "listName"),
         new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
         java.lang.String.class,
         javax.xml.rpc.ParameterMode.IN);
    call.addParameter(new javax.xml.namespace.QName("http://schemas.microsoft.com/sharepoint/soap/", "rowLimit"),
         new javax.xml.namespace.QName("http://www.w3.org/2001/XMLSchema", "string"),
         javax.xml.rpc.ParameterMode.IN);
    call.setUsername(domain + "\\" + user);
    call.setPassword(password);
    call.setReturnType(org.apache.axis.Constants.XSD_SCHEMA);
    Schema schema = (Schema) call.invoke(new Object[]{ listGUID, "100" });The error occurs after the call to the invoke method :
    org.xml.sax.SAXParseException: Character reference "&#11" is an invalid XML characterMany Thanks,
    Ben.

    You're not going to like this but... get the producer (SharePoint) fixed.
    Because if you get invalid XML then yes you'd have to pre-process it, which basically will entail you throwing out Axis and doing it all yourself. Which seems brutal.
    Bottom line is that a webservice producing invalid XML is not in fact a webservice.

  • How do I send XML to a web service?

    I am brand new to Flex. I am trying to write a program that
    uses web services to send and receive data. I have gotten it so
    that it can receive XML from the web service. However, I also need
    to send it, and I am stuck.
    I have tried the following code:
    <mx:WebService id="MyService"
    wsdl="
    http://localhost/FlexTest/service1.asmx?WSDL"
    useProxy="false"
    result="resultHandler(event)">
    <!-- Input: XML Document...Output: String -->
    <mx:operation
    name="HelloPersonAcceptsXmlDocumentReturnsString">
    <mx:request>
    <personXmlDoc>xmlPerson</personXmlDoc>
    </mx:request>
    </mx:operation>
    <!-- Input: XML Node...Output: String -->
    <mx:operation
    name="HelloPersonAcceptsXmlNodeReturnsString">
    <mx:request>
    <personXmlNode>
    xmlPerson.Person
    </personXmlNode>
    </mx:request>
    </mx:operation>
    <!-- Input: String (XML Format)...Output: String -->
    <mx:operation
    name="HelloPersonAcceptsXmlStringReturnsString">
    <mx:request format="xml">
    <personXmlString><p1:Person xmlns:p1="
    http://impact-tech.com/schemas/FlexTest"><p1:ID>f1bd45fc-544b-489d-83cf-349d1f9740ec</p1:I D><p1:FirstName>Joe</p1:FirstName><p1:MiddleName>C.</p1:MiddleName><p1:LastName>Blow</p1:L astName><p1:BirthDate>2006-09-11T14:03:04.4755443-04:00</p1:BirthDate><p1:IsMarried>false< /p1:IsMarried><p1:NumChildren>0</p1:NumChildren><p1:NetWorth>100000</p1:NetWorth></p1:Pers on></personXmlString>
    <!--<personXmlString>{xmlPerson.toXmlString()}</personXmlString>-->
    <!--<personXmlString>{txInput.text}</personXmlString>-->
    </mx:request>
    </mx:operation>
    </mx:WebService>
    In the first operation,
    "HelloPersonAcceptsXmlDocumentReturnsString", I try to send an XML
    object. In the second operation,
    "HelloPersonAcceptsXmlNodeReturnsString", I try to send the root
    node, xmlPerson.Person. In both cases, what actually gets sent is
    literally the text that I put in the <request>node, not the
    object that text is referencing. So for the first, "xmlPerson" gets
    sent to the target, not the XML doc that it refers to.
    In the third operation, I tried three different things, and
    two are commented out. I tried to reference the XML object using
    the toXmlString() method, but again, it literally sent the text
    "xmlPerson.toXmlString()". I tried the curly-brace binding, but
    then nothing gets sent to the web service. I also tried building
    the actual XML document node by node, with values, but I get an
    error from the web service saying it can't be parsed because there
    is an illegal character at Line 1, Position1. The only thing which
    has worked has been to add an Input Text box, copy-and-paste the
    exact same XML structure as I tried to manually build, and then use
    binding to the text property of the InputText control. Then it
    works fine. But I can't actually do that, it's just for testing.
    So my question is how to make a <request> node that is
    part of the web service operation that references an object and
    sends the value of that object to the web service, not literally
    whatever text is typed in that node. I looked at the Web Services
    and Data Binding sections of the help, and didn't see any examples
    covering this. Everything was far more simplistic with binding to
    controls. Can anyone help a newbie, please?

    I don't understand how this isn't a Flex Builder question,
    since it has to do with how Flex Builder interacts with web
    services and how objects are used in binding in MXML.
    But at any rate, I got this code to work, for future
    reference of anyone else looking in this forum:
    Declaring a custom class in MXML was key to allow proper
    binding:
    <CustomClasses:Person id="testPerson" xmlns:local="*"/>
    <mx:WebService id="MyService"
    wsdl="
    http://66.129.123.211/FlexTest/service1.asmx?WSDL"
    useProxy="false"
    result="resultHandler(event)">
    <!-- Input: XML Document...Output: String -->
    <mx:operation
    name="HelloPersonAcceptsXmlDocumentReturnsString">
    <mx:request>
    <personXmlDoc>{testPerson.GetXmlDoc()}</personXmlDoc>
    </mx:request>
    </mx:operation>
    </mx:WebService>

  • Org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x80) was found in the CDATA section

              Hi,
              I,'m using c.tld tag libraries from Yakarta in order to use c:if functions.
              When I use non-unicode characters in my JSP pages, it crashes:
              java.io.IOException: javax.servlet.jsp.JspException: The taglib validator rejected
              the page: "org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x80)
              was found in the CDATA section., "
                   at weblogic.servlet.jsp.Jsp2Java.outputs(Jsp2Java.java:124)
                   at weblogic.utils.compiler.CodeGenerator.generate(CodeGenerator.java:258)
                   at weblogic.servlet.jsp.JspStub.compilePage(JspStub.java:353)
                   at weblogic.servlet.jsp.JspStub.prepareServlet(JspStub.java:211)
                   at weblogic.servlet.jsp.JspStub.checkForReload(JspStub.java:149)
                   at weblogic.servlet.internal.ServletStubImpl.getServlet(ServletStubImpl.java:521)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:351)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:306)
                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:5445)
                   at weblogic.security.service.SecurityServiceManager.runAs(SecurityServiceManager.java:780)
                   at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3105)
                   at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2588)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:213)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:189)
              How can I force it to use ISO-8859-1? All my tries haven't work. What should I
              do? The c.tld libraries and jars are taken from JDK 1.4.1_02
              

    Hi Stefan,
       This is my source xml in moni..
    xmlns:prx="urn:sap.com:proxy:ECP:/1SAI/TAS5BFDF495190544E4B506:701:2008/06/06">
      <SiteId>0080</SiteId>
      <UCC>42027519 91029010015</UCC>
    My interface is SAP(Proxy) to Database(Synchronous).
       SAP (PROXY) --> PI --> DATABASE ( Synchronous Communication )
    Let me know if u need any information from my side...
    Thanks for ur help...
    Thanks,
    Siva..

  • Invalid XML character

    Hi,
    I'm adding new functionality to an existing code. It generates an XML page with additional fields. It was working fine, when I added new fiels to this web page I'm getting the following error.
    I'm new to this and I don't know how to pin point the error.
    can any one please help me.
    Input XSL: 1, 20788: Invalid XML character. (Unicode: 0x1a)
    Input XSL: 1, 20956: Invalid XML character. (Unicode: 0x1a)
    Input XSL: 1, 21190: Invalid XML character. (Unicode: 0x1a)
    Input XSL: 1, 21370: Invalid XML character. (Unicode: 0x1a)
    thanks,

    I tried this but still no luck.
    int j = 0xa1, i;
                   while ((i = dis.readByte()) != -1) {
                        if (i == j) {
                             System.out.print("got it");
                             break;
                        } else {
                             System.out.print((char) i);
    [\code]
    thanks                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

  • Download a XML file from Web Services Using Flex

    Hi All...
    I am new for flex, im developing a windows application using Flex/Air, i have connected the web services with user authentication, now I want to download a xml file using web services in flex,
    how can i do this?? please reply...
    Thanks in advance
    Vasanth

    Hi All....
    I have done this myself using sample tutorials...
    here is the code for your reference guys
              plyLoginName = txtEmailIdDownload.text;                
                     var urlpath:String = new String("your url p?LoginName=");
                    urlpath = new String(urlpath.concat(plyLoginName));
                    urlpath = new String(urlpath.concat("&PlayerType="));
                    urlpath = new String(urlpath.concat(chkseasonvalue));
                    Alert.show(urlpath);
                var request:URLRequest = new URLRequest(urlpath)
                var fileRef:FileReference = new FileReference();           
                fileRef.download(request,"yourfilename.xml");
                Alert.show('File downloaded Successfully');   
                 txtEmailIdDownload.text = "";
                txtPWDownload.text = "";
    thanks
    Vasanth

  • Error in moni as invalid XML character (Unicode: 0x16) was found

    Hello Experts,
    I am facing an issue in Production interface is Proxy - -> JDBC data is passing in ECC successfully in PI moni it is showing error
    as                  Runtime Exception when executing application mapping program com/sap/xi/tf/_MaterialPlantFromSAP_to_MaterialPlantToDYNAMINE_; Details: com.sap.aii.utilxi.misc.api.BaseRuntimeException; An invalid XML character (Unicode: 0x16) was found in the element content of the document.
    when i try to open the payload it is showing data is too long when i click on open screen is getting hang showing as not responding.I have checked in the ECC it is also showing data is too long when i click on open after 1 min payload is opening when i try to copy the payload and paste in Message mapping test tab again screen is getting hanging when i try to test with 20 or 30 records in Mapping it going through.
    I have downloaded that XML file from ECC moni it is 8.83 MB .
    PI can process this huge file ? please suggest me how to pass data in chunks .And also i am not understanding error is due to Payload has not correct data or Payload is huge.
    Please throw some light on the issue any help is highly appreciated.
    Regards
    Praveen Reddy

    Hi Praveen,
                       you need a HEX editor. Please download one from this link
    http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm
    Here in the editor search for the HEX value 0X16 and see the corrosponding charcater in payload.
    Try getting rid of the character before it reaches Integrtaion engine possibly with java mapping.
    Regards
    Anupam
    Edited by: anupamsap on Jan 4, 2012 6:43 PM

  • An invalid XML character (Unicode: 0x0) was found in the prolog of the docu

    Hi folks,
    I'm using the SAX parser to parse a small xml file. If I use that file in IE, there its parsing correctly and displaying the xml in the tree structure.
    But in my Java code its throwing
    org.xml.sax.SAXParseException: An invalid XML character (Unicode: 0x0) was found in the prolog of the document.
    The xml parsing code of my program is
    XMLReader parser = XMLReaderFactory.createXMLReader(
    "org.apache.xerces.parsers.SAXParser");
    HelpPartHandler hp = new HelpPartHandler();
    parser.setContentHandler(hp);
    RandomAccessFile raf = new RandomAccessFile("sample.xml","r");
    byte Contents[] = new byte[(int)raf.length()];
    StringReader sr = new StringReader(new String(Contents));
    InputSource is = new InputSource(sr);
    parser.parse(is);
    The xml file is
    <?xml version="1.0"?>
    <ROOT>
    <NODE> Java </NODE>
    </ROOT>
    Please let me know the mistakes what I have done. Looking for the reply.
    Thanks in Advance
    Prabu

    The message seems clear to me. Your document contains a null character, which is not valid in an XML document. Take it out of the document, and change whatever produced the document to not put it there. (I hope you don't consider Microsoft software to be standards-compliant.)

  • Com.sap.aii.utilxi.misc.api.BaseRuntimeException:An invalid XML character (Unicode: 0x1f) was found in the element content of the document

    Hi,
    I'm getting the below runtime exception during IDOC- SOAP message mapping in Integration engine.
    "Runtime exception occurred during application mapping com/sap/xi/tf/<<<\\Message mapping object name\\>>>; com.sap.aii.utilxi.misc.api.BaseRuntimeException:An invalid XML character (Unicode: 0x1f) was found in the element content of the document"
    I have no clue why this exception occurs. Could anyone say the reason of the exception?
    Thanks!
    Regards,
    Gopi

    Hi Gopinath
    Check this thread
    An invalid XML character (Unicode: 0x1d) was found in the element
    Kind regards
    Javi

  • RFC to JDBC - Character reference invalid XML character

    Dear all Gurus,
    I have developed a RFC to JDBC scenareo and when trying to pass data i get a error saying (sxmb_moni) - "Runtime exception occurred during application mapping com/sap/xi/tf/_MM_de_cx_xd01_va01_2_Siebel_; com.sap.aii.utilxi.misc.api.BaseRuntimeException:Character reference (&quot;&amp;#00&quot;) is an invalid XML character"
    I dont pass any blank values here & tried to pass one value(there is only one not null value in the table) to the Oracle Table again above error accurs.

    Hi,
    You can solve this problem performing following steps in your ECC system:
    1. Go to transaction sm59 and locate the RFC Destination for your PI system. Double-click to open it.
    2. Perform a "Unicode Test" using the button in top menu or pressing Ctrl+F5. The result will either say "Target is a unicode system" or "is NOT a unicode system".
    3. Go to "MDMP & Unicode" tab page and set Non-Unicode or Unicode connection mode, depending on the result of your test in step 2.
    Alternatively, you can also find your Sender Communication Channel in PI's ID and set the Unicode indicator there - it should be consistent with what is set in sm59 in your backend system.
    Hope this helps,
    Greg

  • Character reference "&#0" is an invalid XML character

    Hi When I am trying to parse the XMl using SAX , its giving me the following FATAL error
    FATAL Error while validating the XML document:
    Character reference "&#0" is an invalid XML character
    Pl shelp me to resolve this

    My xml file contains illegal char such as 0x00 0x10 am trying to
    remove them and replace them with " &#14 or &#16" he SAX parser says " &#14 or &#16" an illegal inavlid char.
    What would be the probable solution for this.
    Thanks
    Naveen
    Message was edited by:
    Naveen_Ratkal

  • Fix Invalid XML character (Unicode: 0x1c) before xml data parsing

    How to fix the error :- "An invalid XML character (Unicode: 0x1c) was found in the element content of the document."
    This error message is generated before parsing of xml data.
    So how to filter the unwanted characters like 0x1c during XML file generation?

    ASCII has nothing to do with it. XML is a text format and so an XML file may only include text characters. 0x7 isn't a text character, it's a control character, and it isn't allowed to occur in an XML file.
    As for how to identify which character is causing the problem, the error message tells you that.

  • Invalid XML character in castor XML

    I am using castor API for converting an object into XML. When I marshal the object, following exception occur:
    java.io.IOException: The character '' is an invalid XML character
         at org.apache.xml.serialize.BaseMarkupSerializer.characters(Unknown Source)
         at org.exolab.castor.xml.Marshaller.marshal(Unknown Source)
         at org.exolab.castor.xml.Marshaller.marshal(Unknown Source)
         at org.exolab.castor.xml.Marshaller.marshal(Unknown Source)
    Following is the code snippet which I am using:
    StringWriter writer = new StringWriter(500);
    Marshaller marshal = new Marshaller(writer);
    marshal.setEncoding("windows-1251"); //I have tried all these encodings as well: UTF-8, UTF-7, ASCII, ISO-8859-1, ISO-8859-5, windows-1251
    //marshal.marshal(token, writer);     // This is commented, since the encoding is not applied if I use this method, next statement works fine
    marshal.marshal(token);Here, token is the object which I am trying to marshal. I have tried different encodings, but the problem is not resolved. Could anyone help?
    Castor reference:
    [http://www.castor.org/xml-framework.html ]

    Do you want this encoding to be reversible? For example, that character \u001b which is in the string. You have to represent it by something different in your XML. If you want to get the same thing back when you convert your XML back into Java, then you can't just translate that character into an existing character, because then you have lost information. You have to translate it into some special series of codes. And then when you convert the XML back, you have to recognize that special series of codes and convert that into the \u001b character.
    So yeah, you could write your own custom encoding which did that. I'm not aware of any existing software that does that; it wouldn't be very useful, because it would result in XML documents which used non-standard encodings and hence couldn't be sent to anybody else.

  • Handle invalid xml character while serializing

    I have requirement where I need to serialize a document which contains a string like "ンᅧᅭ%ンᅨ &amp;". While serializing it throws the following exception
    java.io.IOException: The character ' ' is an invalid XML character
    Is there a way we can serialize this String as is with any workaround.
    StringWriter stringOut = new StringWriter();
      DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
      DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
      Document doc = docBuilder.newDocument();
      Element rootElement = doc.createElement("company");
      doc.appendChild(rootElement);
      String xml = "ンᅧᅭ%ンᅨ &amp;";
      //String xml = "ンᅧᅭ%ンᅨ &amp;";
      Element junk = doc.createElement("replyToQ");
      junk.appendChild(doc.createCDATASection(xml));
      //junk.appendChild(doc.createTextNode(stripNonValidXMLCharacters(xml)));
      rootElement.appendChild(junk);
      //org.w3c.dom.Document doc = this.toDOM();
      //Serialize DOM
      OutputFormat format = new OutputFormat(doc,"UTF-8",true);
      format.setIndenting(false);
      format.setLineSeparator("");
      format.setPreserveSpace(true);
      format.setOmitXMLDeclaration(false);
      XMLSerializer serial = new XMLSerializer( stringOut, format );
      // As a DOM Serializer
      serial.asDOMSerializer();
      serial.serialize( doc.getDocumentElement() );

    As a guess because you are treating CDATA as meaning the same as 'binary' which it isn't.  The characters in CDATA still must be valid XML characters.
    If you want binary data then base64 encode it and put that in the document - and you won't need CDATA at all then, it will just be regular element text.

  • Getting invalid xml character while marshalling

    Hi
    I have a text which contains all characters including some special chars.I am replacing the html codes for &,>,<,\," characters. I am building the xml file and trying to marshall it. But i am getting "The character '' is an invalid XML character". I am using castor-0.9.6.jar. Can any one tell me how can i handle special chars like � is easy way rather than repacing each and every character.
    Please let me know why i am getting the above error (is the special char end of file char. actually i am reating from string not from file).
    Thanks & Regards,
    Prasanth

    As a guess because you are treating CDATA as meaning the same as 'binary' which it isn't.  The characters in CDATA still must be valid XML characters.
    If you want binary data then base64 encode it and put that in the document - and you won't need CDATA at all then, it will just be regular element text.

Maybe you are looking for

  • My artwork and images keep resizing at random how to I stop this from happening ?

    I have tried to PIN / LOCK the images but nothing is working, pulling my hair out - When I add an image to a slideshow then upload to FTP then i go online all the images are mis aligned and re sized - I have to go back and re-set them all again. done

  • Installing Adobe Reader 9.0

    I get the message "Setup has detected that you already have a more functional product installed." I have run Windows Installer Cleanup, removed previous versions of Adobe reader and checked the registry for any references. I cannot install Reader 8.0

  • Cant add files to itunes library

    I downloaded some songs from a website and they showed/loaded up on windows media player. I tried to add them to itunes and nothing happened. I burned them to a cd and then tried to import the cd, but it never showed up. I looked at the files and it

  • ITunes closes while updating iPod

    Everytime I hook up my iPod mini to update it, iTunes closes and Windows asks to send an error report. Yeah. I need help. It's not the iPod. I tried it on my friend's PC and it loaded songs on the iPod just fine. (I'm now stuck with an iPod full of p

  • Dynamic Link not available from Premiere Pro CC to After Effects CC

    Hey, I cant click on the Dynamic Link in Premiere pro CC and in after effects i can. how i can fix it?