我使用一个名为“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,无论是本地引用还是在互联网上都是完全相同的。
引发的错误如下:
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有足够的理解,或者说我是这么想的,我不知道这里有什么问题。
发布于 2016-04-29 22:27:09
孩子,我觉得很可笑。因此,使用DTD进行格式化的方法是使用doctype声明指定的。在我的示例中,我实际上是使用XSD进行XML格式化,这是一种与DTD不同的技术。
使用XML方法指定本地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">我希望我能帮助其他人看上去不傻。谢谢!
https://stackoverflow.com/questions/36926898
复制相似问题