不要将HTML实体替换为HXT

时间:2013-03-13 19:24:56

标签: xml haskell hxt

如何使用HXT保留HTML实体? withSubstHTMLEntities SystemConfig似乎没有改变任何内容:

runX $ xshow $ readString [] "<doc><p> &gt; </p></doc>"

runX $ xshow $ readString [withSubstHTMLEntities no] "<doc><p> &gt; </p></doc>"

都产生

["</ source=\"\"<doc><p> &gt; </p></doc>\"\" transfer-URI=\"string:\" transfer-Message=\"OK\" transfer-Status=\"200\"><doc><p> > </p></doc><//>"]

我完全不知道在哪里看。我几乎尝试了所有其他选项,我可以传递给readDocumentreadString

由于

1 个答案:

答案 0 :(得分:1)

您可以使用writeDocumentToString中的Text.XML.HXT.Arrow.WriteDocument。签名是:

writeDocumentToString :: ArrowXml a => SysConfigList -> a XmlTree String

所以,例如,

f :: IO String
f = do
  let arr = readString [] "<doc><p> &lt;tag&gt; </p></doc>" >>> writeDocumentToString []
  results <- runX arr
  return . head $ results

f将返回IO "<doc><p> &lt;tag> </p></doc>"。 (这足以避免将<tag>解析为标记)