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

匿名 (未验证) 提交于 2019-12-03 09:14:57

问题:

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-18</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.

回答1:

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.



回答2:

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?



回答3:

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.



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!