我正在使用一个名为“beanio”的工具包来解析 Java 中的固定长度平面文件。使用该工具包,我需要使用 XML 文档定义文件格式。我可以参考 beanio 网站上的架构位置,但我更愿意使用本地副本。原因是我想确保万一网站发生任何事情,我将有一个工作程序。
我的问题是,当我尝试在本地引用 xsd 文件时,SAX 引擎会引发有关格式错误的 xml / 定义的错误。以下将起作用:
<beanio xmlns="http://www.beanio.org/2012/03"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.beanio.org/2012/03 http://www.beanio.org/2012/03/mapping.xsd">
但是,以下内容不会:
<!DOCTYPE beanio SYSTEM "resources/formatting/mapping.xsd">
<beanio>
这些文件,mapping.xsd,无论是在本地还是在 Internet 上引用,都是完全相同的。
抛出的错误如下:
Caused by: org.xml.sax.SAXParseException; systemId: file:///C:/workspace/LookupsFileProcessor/resources/formatting/mapping.xsd; lineNumber: 2; columnNumber: 2; The markup declarations contained or pointed to by the document type declaration must be well-formed.
这非常令人沮丧。用于 java 的平面文件解析的工具包非常陈旧且过时。我已经尝试了其中的四个,其中一些要么没有可用的 API,要么它们依赖于外部 DTD/XSD 定义,这导致我遇到了同样的问题。
我对 XML 的理解足够好,至少我是这么想的,但我不确定这里有什么问题。