我正在开发一个Java应用程序,它从xml文件中读取一些数据。试图执行,我得到这个错误:
org.xml.sax.SAXParseException;systemId:文件:/c:/myxmlfile.xml;lineNumber: 7;columnNumber: 55;s4s-elt-character:除了'xs:appinfo'和'xs:documentation'之外,模式元素中不允许使用非空白字符。看到'My Name Value'.
我的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>
你能帮我了解问题在哪里吗?
是的,我也遇到了同样的问题,然后我发现我正在传递XSD文件作为XML文件的输入。
Like that -
String xsdPath= "122015/1224/sample.xml";
String **xmlPath** = "122015/1224/sample.xsd";
在我看来,解析器似乎出于某种原因试图将您的实例文档作为模式文件处理。
当我试图验证转换文件时,我得到了相同的错误。
我得到错误的原因是因为我用XML文件而不是XSD来验证它。在我的项目中,它们都有相同的名字。因此,我错误地将XML文件的名称替换为XSD。
一旦我改变了,它就像预期的那样工作了。所以,如果上面的解决方案不起作用,看看这是否是你的问题。
我使用的是:
<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文件。