XML ファイルをコピーしてその一部を編集する必要があるものをハッキングしています。編集は問題ありませんが、興味深いことに、コピーは非常に難しい場合があります。これは基本的に「リバース エンジニアリング」作業であり、いくつかの要素の終了タグを何らかの方法で保持する必要があることがわかりました (要素に空白しか含まれていない場合や空であっても)。問題は、HXT が次のようなものを読み取るときです。
<tag>
</tag>
次に、それを次のように印刷します
<tag/>
withOutputXHTML
関数のオプションを指定する明示的な終了タグ(またはそれを呼び出すもの)を常に使用するように指示できますが、次writeDocument
のように記述される要素があります
<tag/>
«そのまま» コピーする必要があります。
したがって、基本的に私の問題は次のようになります: «特定の要素の終了タグを保持してこのファイルをコピーするには?»:
<foo>
<bar>
</bar>
<baz/>
</foo>
参照/実験用の単純なコピー プログラム:
module Main (main) where
import Control.Monad (void)
import Text.XML.HXT.Core
main :: IO ()
main = void $ runX $
readDocument [ withValidate no ] "test.xml" >>>
writeDocument [ withIndent yes
, withOutputEncoding isoLatin1
, withOutputXHTML ] "result.xml"