Html 有没有办法在Elm中遍历XML树?
如果我有XML数据要转换成Elm Html,有没有一种方法可以遍历XML树,寻找可能在树中任何位置的元素?例如,我想以这个传入的xml为例:Html 有没有办法在Elm中遍历XML树?,html,xml,elm,Html,Xml,Elm,如果我有XML数据要转换成Elm Html,有没有一种方法可以遍历XML树,寻找可能在树中任何位置的元素?例如,我想以这个传入的xml为例: ,但我真的看不到一种在树上行走、沿途变换标记的方法 您提到的库是一个解码器,但我建议您在这里使用底层解析器 您可以使用elm/parser构建您自己的解析器,该解析器输出一棵树,您可以轻松地向下走,输出Html或表示Html的字符串。或者,您可以使用已经为您构建的 这是一个很好的选择。我相信您在内部提到的elm xml解码包使用了它 下面是一个示例,说明
,但我真的看不到一种在树上行走、沿途变换标记的方法 您提到的库是一个解码器,但我建议您在这里使用底层解析器
您可以使用elm/parser
构建您自己的解析器,该解析器输出一棵树,您可以轻松地向下走,输出Html
或表示Html的字符串。或者,您可以使用已经为您构建的
这是一个很好的选择。我相信您在内部提到的elm xml解码包使用了它
下面是一个示例,说明如何让Elm使用jinjor/Elm xml解析器获取一个html字符串并输出Elm自己的html版本(特别是xmlToHtml
函数显示了如何“沿着树走”由XmlParser
输出的结构):
将Html导入为H
导入XmlParser
xmlToHtml:XmlParser.Node->H.Html
XMLTOHTMLXMLNode=
案例xmlNode
元素标记属性子项->
--执行xml标记或属性到此处所需内容的任何映射!
H.node标记[](List.map xmlToHtml子项)
XmlParser.Text文本->
H.文本
视图:Model->H.Html从不
视图=
让
xml=
"""
Lorem ipsum文本位于此处。可能包含一些文本
也许这里还有一段
"""
在里面
Result.map
(.root>>xmlToHtml)
(XmlParser.parse xml)
|>Result.withDefault(H.text“未能解析xml:(“”)
当然可以遍历树。您需要树的定义,可能是一个记录结构,然后您需要决定如何处理找到的每个节点。到目前为止,您得到了什么?这很好。但是我如何导入模型?我正在尝试在Ellie中运行它:它抱怨找不到该类型。模型是just无论您的应用程序使用什么类型。您都可以自己声明。下面是您的Ellie的一个运行示例:
import Html as H
import XmlParser
xmlToHtml : XmlParser.Node -> H.Html Never
xmlToHtml xmlNode =
case xmlNode of
XmlParser.Element tag attributes children ->
-- do any mapping of the xml tag or attribute to what you want here!
H.node tag [] (List.map xmlToHtml children)
XmlParser.Text text ->
H.text text
view : Model -> H.Html Never
view _ =
let
xml =
"""
<arbitrary>
<numberOfTagsHere>
<p>Lorem ipsum text goes here. May contain <tag foo="bar">some text</tag></p>
<p>Maybe another paragraph here.</p>
</numberOfTagsHere>
</arbitrary>
"""
in
Result.map
(.root >> xmlToHtml)
(XmlParser.parse xml)
|> Result.withDefault (H.text " Failed to parse the xml :( ")