我正在开发一个从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>
你能帮我理解问题出在哪里吗?
答案 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文件中。