5

次の XML ドキュメントを で解析しようとしていますHXT

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Key</key>
    <string>Value</string>
</dict>
</plist>

ネットワークアクセスが必要になるため、ここでは検証は必要ありません。残念ながら、HXT はこの単純なドキュメントを解析するためにhxt-curl/パッケージをインストールする必要があります。hxt-http

Prelude> :m +Text.XML.HXT.Core
Prelude Text.XML.HXT.Core> runX $ readDocument [withValidate no] "example.xml"

fatal error: HTTP handler not configured,
please install package hxt-curl and use 'withCurl' config option
or install package hxt-http and use 'withHTTP' config option

hxt-curl/hxt-httpパッケージは本当に必要ないので、依存関係のリストに追加したくありません。解析中のドキュメントを変更できません。別の xml 解析ライブラリに移動することも望ましくありません。

不要なパッケージを追加せずにサンプル ドキュメントを HXT で解析する方法はありますか?

4

1 に答える 1

6

withSubstDTDEntities noまた、宣言する必要があります。

runX $ readDocument [withValidate no, withSubstDTDEntities no] "example.xml"

説明: この構成のデフォルトは yes であり、hxt が dtd ファイルをダウンロードしようとするのはそのためだと思います。ドキュメントから:

このオプションを切り替えて検証をオフにすると、解析が高速化される可能性があります。その場合、DTD ドキュメントを読み取る必要がなくなります。

于 2014-04-04T09:21:46.010 に答える