SAXParseException:“s4s-elt-character:架构元素中不允许使用非空白字符”

时间:2013-01-02 17:21:43

标签: xml xsd sax

我正在开发一个从xml文件中读取一些数据的Java应用程序。 试图执行,我收到此错误:

org.xml.sax.SAXParseException; systemId:file:/ c:/myxmlfile.xml; lineNumber:7; columnNumber:55; s4s-elt-character:除了'xs:appinfo'和'xs:documentation'之外的架构元素中不允许使用非空白字符。看到'我的名字价值'。

我的xml文件以:

开头
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gdl_set xmlns="http://www.mywebsite.com"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.mywebsite.com/myxsddefinition.xsd"
     shortname="Shortname">
<name>My Name Value</name>

你能帮我理解问题出在哪里吗?

4 个答案:

答案 0 :(得分:4)

在我看来,解析器出于某种原因试图将您的实例文档作为模式文件进行处理。

答案 1 :(得分:2)

是的我也遇到了同样的问题,然后我发现我将XSD文件作为XML文件的输入传递。

喜欢那样 -

String xsdPath= "122015/1224/sample.xml";
String **xmlPath** = "122015/1224/sample.xsd";

答案 2 :(得分:1)

我在尝试验证转换文件时遇到了同样的错误。

我收到错误的原因是因为我使用XML文件而不是XSD验证它。在我的项目中,它们都具有相同的名称。所以我错误地给出了XML文件的名称来代替XSD。

一旦我改变了它,它就按预期工作了。因此,如果上述解决方案不起作用,请查看您的案例中是否存在问题。

答案 3 :(得分:0)

我正在使用:

<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.2</version>

而不是1.6版本和2.2版本,您可以指定:

<sources>
     <source>src/main/resources/masteraccount/</source>
</sources>

但我忘了添加

<xjcSourceExcludeFilters>
    <filter implementation="org.codehaus.mojo.jaxb2.shared.filters.pattern.PatternFileFilter">
        <patterns>
            <pattern>\.xml</pattern>
        </patterns>
    </filter>
</xjcSourceExcludeFilters>

禁用.xml文件的使用。在我的情况下,插件试图使用.xml文件,但正确的我的架构是在.xsd文件中。