使用xjc从xsd生成类

时间:2011-07-22 08:13:28

标签: java jaxb xjc

我尝试从xsd生成类但我遇到了第二行的问题

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:saqcc="urn:saq:cct:cct-3.5.xsd" xmlns:flx="urn:saq:mtl:grey:flux:04489:rep-1.0.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="urn:saq:mtl:grey:flux:04489:rep-1.0.xsd"  elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.1">

       ...

我收到了这个错误:

  

[错误] prolog中不允许使用内容。     所以xjc似乎有架构问题

这个xsd有一个导入,在这个导入中有另一个导入...所以我不知道什么时候如果xjc能够管理错误将被删除...

2 个答案:

答案 0 :(得分:4)

我遇到了这个问题,结果证明编码是个问题:

<?xml version="1.0" encoding="utf-8"?>

有效但

<?xml version="1.0" encoding="utf-16"?>

没有(至少在我的Windows7 / 64位操作系统上)。

答案 1 :(得分:2)

当我在任何类型的XML文档中出现此错误时,通常是因为<?xml之前的某些(不可见)内容。更具体地说,这是由于某些编辑器添加的BOM(byte order mark)。在我的情况下,主要是由于此BOM:

检查文件中是否包含此类内容。如果您这样做,请将其删除。 XML文件不需要BOM,因为它们可以在prolog中正式指定编码,如下所示:

<?xml version="1.0" encoding="utf-8"?>

UPDATE :prolog 必须是格式良好的XML的第一部分,正如w3c在此定义的那样:

http://www.w3.org/TR/2008/REC-xml-20081126/#sec-well-formed