【问题标题】:SXXP0003: Error reported by XML parser: Content is not allowed in prologSXXP0003:XML 解析器报告的错误:prolog 中不允许内容
【发布时间】:2010-02-22 12:54:20
【问题描述】:

我的 XML 文件是

<?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>

我正在使用以下 XSLT 将我的 xml 文件拆分为多个 xml 文件。

<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>

它在示例 Java 应用程序中运行良好,但是当我尝试在基于 Spring 的应用程序中使用它时,它会出现以下错误。

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

我不知道出了什么问题?请帮我。提前致谢。

【问题讨论】:

  • 您要转换的 XML 是什么?
  • 我可以将问题编辑为我在使用 xslt 时面临的另一个问题,我应该包含在这个问题中还是单独写一个问题?
  • 呃...如果 Larry Shaddon 是一个真实的人,您可能希望从这里以及您发布的 stylusstudio 论坛中删除他的详细信息。
  • 嗨,Brabster,您能详细说明一下吗?我不明白你的意思吗?我应该发布这个问题吗?
  • @Nisarg:欢迎来到 SO!如果您的其他问题与此问题不密切相关,则应将其作为单独的问题提交。 Brabster 说你应该从你的帖子中删除个人信息;如果拉里是一个真实的人,他可能不喜欢公开发布他的地址。您可以使用帖子下方的编辑链接来执行此操作。

标签: java xml spring xslt


【解决方案1】:

您的 XML 以 UTF-8 (0xEF,0xBB,0xBF) 格式的 字节顺序标记 开头,这是不可见的。尝试使用十六进制编辑器打开文件并查看。

Windows 下的许多文本编辑器都喜欢在 UTF-8 编码文本的开头插入它,尽管 UTF-8 实际上并不需要字节顺序标记,因为字节顺序在 UTF-8 中已经定义好了。

Java 的 XML 解析器都会在 BOM 上阻塞,并显示您所看到的错误消息。您需要剥离 BOM,或者为您正在处理 XML 解析器的 InputStream 编写一个包装器,以便在解析时为您执行此操作。

【讨论】:

    【解决方案2】:

    在 XML 数据开始之前,文档中有一些内容,猜测可能是空格(这是我以前见过的地方)。

    序言是文档中开始标签之前的部分,具有类似标签的结构,如&lt;?&lt;!。这些标签之间也可能有一些字符/空格。 Prologs 和有效内容在tiztag.com 上进行了解释。

    也许张贴一个非个性化的 XML 数据示例?

    【讨论】:

    • 进行转换时出现问题,现在已解决。非常感谢 Respose。
    【解决方案3】:

    如果您尝试对内容进行两次处理,也有可能获得此信息。 (这在春天很容易做到。)在这种情况下,您的 XML 不会有任何问题。由于示例应用程序有效,因此这种情况似乎很可能发生,但引入 spring 会导致问题。

    【讨论】:

    • 谢谢我的问题已经解决了,它是 Spring 的转换问题。非常感谢。
    【解决方案4】:

    在我的情况下,encoding="UTF-16" 导致了这个问题。当我将其更改为 UTF-8 时,它得到了解决。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-23
      • 2016-11-28
      • 2015-11-15
      • 2011-06-19
      • 2011-02-05
      • 1970-01-01
      • 2015-12-15
      • 2019-04-23
      相关资源
      最近更新 更多