我正在破解一个应该复制 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"