Haskell 如何使用xml导管提取子级的标记和内容?
更新:经过多次不同的尝试,我现在得出的结论是,下面看到的行为是预期的,我只是遇到了一些困难,因为我以后会使用ToJson。如果我完全解决它,将进行更新。 ============================================================================================== 我正在尝试使用xml管道来实现这一点:Haskell 如何使用xml导管提取子级的标记和内容?,haskell,xml-conduit,Haskell,Xml Conduit,更新:经过多次不同的尝试,我现在得出的结论是,下面看到的行为是预期的,我只是遇到了一些困难,因为我以后会使用ToJson。如果我完全解决它,将进行更新。 ============================================================================================== 我正在尝试使用xml管道来实现这一点: 将文档的光标向下移动到html文档的元素 将此节点的任何子体视为文本。i、 e.不仅要将内容作为文本获取,还要获取
- 将文档的光标向下移动到html文档的元素李>
- 将此节点的任何子体视为文本。i、 e.不仅要将内容作为文本获取,还要获取标签本身李>
formatParas::[Text]->[Text]您能提供一个HTML输入示例吗?我正在加载一个Utf8编码的本地文件。我希望元素中的所有元素的祖先都被“折叠”并存储为带有标记的文本,其中的特殊字符被保留并存储为文本。事实上,我注意到了,我在上面犯了一个错误。下面的示例html:
Hi-there user05402
应该是““<ol>
<li class="c1">
this is really "good work" <i>John</i>.
</li>
</ol>
"<li class="c1"> this is really "good work" <i>John</i> </li>"
import Text.Blaze.Html (toHtml, preEscapedToHtml)
import Text.Blaze.Html.Renderer.Utf8 (renderHtml)
--import Text.Blaze.Html.Renderer.String (renderHtml)
--import Text.Blaze.Html.Renderer.Text (renderHtml)
import Data.Text.Encoding (decodeUtf8)
import Data.ByteString.Lazy (toStrict)
extractAllParas :: Cursor -> [ Text ]
extractAllParas c = do
let mt' = c $/ laxElement "body" &// laxElement "ol" &/ anyElement
mt = (map (decodeUtf8 . toStrict . renderHtml . toHtml . node) $ mt')
case mt of
[ "" ] -> []
paras -> formatParas paras