首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bean-IO、XML Doctype和XSD的问题

Bean-IO、XML Doctype和XSD的问题
EN

Stack Overflow用户
提问于 2016-04-28 23:02:16
回答 1查看 481关注 0票数 0

我使用一个名为“beanio”的工具包在Java中解析一个固定长度的平面文件。在工具包中,我需要用XML文档定义文件格式。我可以参考beanio网站上的模式位置,但我更愿意使用本地副本。原因是,我想确定,如果发生任何事情发生在网站上,我将有一个工作计划。

我的问题是,当我试图在本地引用xsd文件时,SAX引擎抛出一个关于格式错误的xml /定义错误。下列措施将起作用:

代码语言:javascript
复制
<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">

然而,以下情况不会:

代码语言:javascript
复制
<!DOCTYPE beanio SYSTEM "resources/formatting/mapping.xsd">
<beanio>

这些文件,mapping.xsd,无论是本地引用还是在互联网上都是完全相同的。

引发的错误如下:

代码语言:javascript
复制
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有足够的理解,或者说我是这么想的,我不知道这里有什么问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-04-29 22:27:09

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

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

代码语言:javascript
复制
<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">

我希望我能帮助其他人看上去不傻。谢谢!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36926898

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档