使用Apache Daffodil解析CSV文件时schemaLocation解析失败如何解决?
问题
我是Apache Daffodil新手,正按照官方示例操作,尝试使用csv.dfdl.xsd模式解析simpleCSV.csv文件,两个文件均与daffodil.bat在同一目录。在命令行执行:
.\daffodil.bat parse --schema csv.dfdl.xsd simpleCSV.csv
后,出现如下错误:
[error] Schema Definition Error: Error loading schema due to org.xml.sax.SAXParseException; DaffodilXMLLoader: Unable to resolve schemaLocation='csv-base-format.dfdl.xsd'.
Schema context: file:/C:/Users/rinat/OneDrive/Desktop/WORK%20STUFF/apache-daffodil-3.4.0-bin/apache-daffodil-3.4.0-bin/bin/csv.dfdl.xsd Location in file:/C:/Users/rinat/OneDrive/Desktop/WORK STUFF/apache-daffodil-3.4.0-bin/apache-daffodil-3.4.0-bin/bin/csv.dfdl.xsd
解决方法
- 补充依赖schema文件:
csv.dfdl.xsd需要依赖csv-base-format.dfdl.xsd这个基础格式定义文件,你需要将该文件也放置到与daffodil.bat、csv.dfdl.xsd相同的目录中。该文件可从官方示例的完整资源包中获取。 - 修正schema路径引用:如果
csv-base-format.dfdl.xsd不在当前目录,打开csv.dfdl.xsd,修改其中的schemaLocation属性,指定该文件的正确路径(相对路径或绝对路径均可)。例如:schemaLocation="./formats/csv-base-format.dfdl.xsd" - 使用完整示例目录执行命令:直接下载官方提供的完整示例压缩包,解压后切换到示例对应的子目录下执行解析命令,所有依赖文件会自动处于正确位置,避免路径问题。
内容的提问来源于stack exchange,提问作者Rina Tse
相关产品推荐
相关产品推荐

