3

我正在使用 XML-Simple 和 XML-SAX-Expat 来解析带有外部实体的文档。我声明我的实体如下:

<!ENTITY chap1 SYSTEM "chapter-1.xml">

我从同一目录中的另一个文件中引用。

但是,它正在我当前的工作目录中搜索文件,而不是根文档的位置。

404 File `/u/egge/chapter-1.xml' does not exist

Handler couldn't resolve external entity at line 35, column 2, byte 1040
error in processing external entity reference at line 35, column 2, byte 1040 at     /perl5/PROJ/XML-Parser/2.36-2.0.1-5.10-64/lib/perl5/XML/Parser.pm line 187

我怎样才能让它使用根文档的目录而不是我的 CWD?

4

1 回答 1

2

实用程序 xmllint 具有 --noent 标志,它将扩展根文档的 ENTITY 引用。如果找不到替代方案,您总是可以使用以下方法快速重写输入文件:

xmllint --noent $input.xml > 扩展的.xml

它还具有预先计算完整 XML 文件的优点,而不是每次都在运行时进行。

于 2013-10-15T15:37:15.550 回答