开发者

SXXP0003: Error reported by XML parser: Content is not allowed in prolog

开发者 https://www.devze.com 2022-12-21 01:41 出处:网络
My XML file is <?xml version=\"1.0\" encoding=\"ISO-8859-1\"?> <T0020 xsi:schemaLocation=\"http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd\"

My XML file is

<?xml version="1.0" encoding="ISO-8859-1"?>
<T0020
    xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.safersys.org/namespaces/T0020V1">
    <INTERFACE>
        <NAME>SAFER</NAME>
        <VERSION>04.02</VERSION>
    </INTERFACE>
    <TRANSACTION>
        <VERSION>01.00</VERSION>
        <OPERATION>REPLACE</OPERATION>
        <DATE_TIME>2009-09-01T00:00:00</DATE_TIME>
        <TZ>CT</TZ>
    </TRANSACTION>
    <IRP_ACCOUNT>
        <IRP_CARRIER_ID_NUMBER>564182</IRP_CARRIER_ID_NUMBER>
        <IRP_BASE_COUNTRY>US</IRP_BASE_COUNTRY>
        <IRP_BASE_STATE>AR</IRP_BASE_STATE>
        <IRP_ACCOUNT_NUMBER>67432</IRP_ACCOUNT_NUMBER>
        <IRP_ACCOUNT_TYPE>I</IRP_ACCOUNT_TYPE>
        <IRP_STATUS_CODE>100</IRP_STATUS_CODE>
        <IRP_STATUS_DATE>2008-02-01</IRP_STATUS_DATE>
        <IRP_UPDATE_DATE>2009-06-1开发者_开发百科8</IRP_UPDATE_DATE>
        <IRP_NAME>
            <NAME_TYPE>LG</NAME_TYPE>
            <NAME>LARRY SHADDON</NAME>
            <IRP_ADDRESS>
                <ADDRESS_TYPE>PH</ADDRESS_TYPE>
                <STREET_LINE_1>10291 HWY 124</STREET_LINE_1>
                <STREET_LINE_2/>
                <CITY>RUSSELLVILLE</CITY>
                <STATE>AR</STATE>
                <ZIP_CODE>72802</ZIP_CODE>
                <COUNTY>POPE</COUNTY>
                <COLONIA/>
                <COUNTRY>US</COUNTRY>
            </IRP_ADDRESS>
            <IRP_ADDRESS>
                <ADDRESS_TYPE>MA</ADDRESS_TYPE>
                <STREET_LINE_1>10291 HWY124</STREET_LINE_1>
                <STREET_LINE_2/>
                <CITY>RUSSELLVILLE</CITY>
                <STATE>AR</STATE>
                <ZIP_CODE>72802</ZIP_CODE>
                <COUNTY>POPE</COUNTY>
                <COLONIA/>
                <COUNTRY>US</COUNTRY>
            </IRP_ADDRESS>
        </IRP_NAME>
    </IRP_ACCOUNT>
</T0020>

I am using following XSLT to split my xml file to multiple xml file .

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:t="http://www.safersys.org/namespaces/T0020V1" version="2.0">
 <xsl:output method="xml" indent="yes" name="xml" /> 
 <xsl:variable name="accounts" select="t:T0020/t:IRP_ACCOUNT" /> 
 <xsl:variable name="size" select="30" />
 <xsl:template match="/">
  <xsl:for-each select="$accounts[position() mod $size = 1]">
   <xsl:variable name="filename" select="resolve-uri(concat('output/',position(),'.xml'))" /> 
    <xsl:result-document href="{$filename}" method="xml">
     <T0020>
      <xsl:for-each select=". | following-sibling::t:IRP_ACCOUNT[position() &lt; $size]">
         <xsl:copy-of select="." /> 
        </xsl:for-each>      
     </T0020>
    </xsl:result-document>    
  </xsl:for-each>
  </xsl:template>

</xsl:stylesheet>

It works well in Sample Java Apllication,but when i tried to use same in my Spring based application then it gives following error .

Error on line 1 column 1 of T0020:
  SXXP0003: Error reported by XML parser: Content is not allowed in prolog.

I don't know what goes wrong ? Please help me. Thanks In Advance.


Your XML starts with a byte-order mark in UTF-8 (0xEF,0xBB,0xBF), which isn't visible. Try opening your file with a hex editor and have a look.

Many text editors under Windows like to insert this at the start of UTF-8 encoded text, despite the fact that UTF-8 doesn't actually need a byte order mark since the ordering of bytes in UTF-8 is already well defined.

Java's XML parsers will all choke on a BOM with exactly the error message you are seeing. You'll need to either strip out the BOM, or write a wrapper for your InputStream that you're handing the XML parser to do this for you at parsing time.


There is some content in the document before the XML data starts, probably whitespace at a guess (that's where I've seen this before).

The prolog is the part of the document that is before the opening tag, with tag-like constructs like <? and <!. You may have some characters/whitespace in between these tags too. Prologs and valid content are explained on tiztag.com.

Maybe post up an depersonalised example of your XML data?


It's also possible to get this if you attempt to process the content twice. (Which is fairly easy to do in spring.) In which case, there'd be nothing wrong with your XML. This scenario seems likely since the sample application works, but introducing spring causes problems.


In my case the encoding="UTF-16" was causing this issue. It got resolved when I changed it to UTF-8.

0

精彩评论

暂无评论...
验证码 换一张
取 消