我在黑客應該複製一個XML文件並編輯其中的一小部分它。現在編輯是好的,但有趣的是,複製可能相當複雜。這本質上是「逆向工程」工作,現在我知道我應該以某種方式保存某些元素的結束標記(即使元素 僅包含空白或爲空)。問題是,當HXT讀取 像複製保存某些元素的結束標記的XML文件
<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"