You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Apache Daffodil解析NITF转XML遇Schema错误如何解决?

解决Apache Daffodil解析NITF文件的schemaLocation错误

问题根源

主schema文件nitf.dfdl.xsd中对依赖schema的引用使用了带包层级的路径(com/tresys/nitf/xsd/xxx),但实际所有schema文件都平放在同一目录,导致Daffodil无法按指定路径找到依赖文件。

解决方法

方法一:修改schema内的路径引用

  • 打开nitf.dfdl.xsd,找到所有引用nitf_common_types.dfdl.xsd和nitf_extension_types.dfdl.xsd的语句,例如:

    <xs:import namespace="..." schemaLocation="com/tresys/nitf/xsd/nitf_common_types.dfdl.xsd"/>

  • 将schemaLocation的值修改为直接的文件名,去掉前缀路径,改为:

    <xs:import namespace="..." schemaLocation="nitf_common_types.dfdl.xsd"/>

  • 对另一个依赖schema的引用做同样修改,保存文件后重新执行解析命令。

方法二:匹配schemaLocation的目录结构存放文件

  • 在daffodil.bat所在目录下创建目录结构:com\tresys\nitf\xsd(Windows系统用反斜杠)
  • 将nitf_common_types.dfdl.xsd和nitf_extension_types.dfdl.xsd移动到该目录中
  • 保持nitf.dfdl.xsd在原目录,重新执行解析命令。

方法三:命令行指定schema搜索路径

执行解析命令时添加--schema-path参数,指定当前目录为schema搜索路径:

.\daffodil.bat parse --schema nitf.dfdl.xsd --schema-path . 2301573_3.ntf

该参数会让Daffodil在指定路径下查找所有依赖schema,忽略原schemaLocation中的路径结构。

内容的提问来源于stack exchange,提问作者Rina Tse

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 10:20:43