Bean IO、XML Doctype和XSD出现问题



我正在使用一个名为"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.xd,无论是在本地还是在互联网上引用,都是完全相同的。

抛出的错误如下:

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理解得很好,或者说我是这么想的,但我不确定这里的问题是什么。

天哪,我觉得很可笑。因此,使用DTD进行格式化的方法是使用doctype声明指定的。在我的示例中,我实际上使用XSD来进行XML格式化,这是一种与DTD不同的技术。

使用XMLSchema方法指定本地XSD文件的正确方法如下:

<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 resources/formatting/mapping.xsd">

我希望我能帮助其他人不要显得愚蠢。谢谢

相关内容

  • 没有找到相关文章

最新更新