Bean-IO、XML Doctype 和 XSD 有问题
Trouble with Bean-IO, XML Doctype, and 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.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,或者我是这么想的,但我不确定这里的问题是什么。
天哪,我觉得可笑吗?因此,使用 DTD 进行格式化的方法是使用文档类型声明指定的。在我的示例中,我实际上使用 XSD 进行 XML 格式化,这是一种与 DTD 不同的技术。
使用XML Schema方法指定本地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">
我希望我能帮助其他人不要看起来很傻。谢谢!
我正在使用名为 '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,或者我是这么想的,但我不确定这里的问题是什么。
天哪,我觉得可笑吗?因此,使用 DTD 进行格式化的方法是使用文档类型声明指定的。在我的示例中,我实际上使用 XSD 进行 XML 格式化,这是一种与 DTD 不同的技术。
使用XML Schema方法指定本地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">
我希望我能帮助其他人不要看起来很傻。谢谢!