gpt4 book ai didi

scala - 在 Lift 中,如何选择重复(自动复制)CssSel 转换中的顶级元素

转载 作者:行者123 更新时间:2023-12-02 22:20:11 25 4
gpt4 key购买 nike

我有以下 html 结构:

<div class="top_level">
... other elements ...
</div>

我希望输出结果为 DIV 序列:

<div id="1" class="top_level">
... other elements ...
</div>
<div id="2" class="top_level">
... other elements ...
</div>
<div id="3" class="top_level">
... other elements ...
</div>

我正在尝试通过 CssSel 转换来实现这一点,其中嵌套元素本身将被循环(div 中有一个表格),所以我有类似于:

".top_level *" #> groups.map(group =>
".top_level [id]" #> group.id & // WHAT CSS Selector can I use?
".the_row *" #> group.rows.map( ... )
)

一切正常,只是没有设置 ID。我可以看到我的选择器“.top_level [id]”是嵌套的,因此它不起作用是有道理的,但我想不出还有什么可以放在那里来获得我正在寻找的结果。

最佳答案

这是一种重复 .top_level 元素的方法,同时向每个节点添加一个 id 并进一步处理内容。您可以将其剪切并粘贴到 REPL 中进行操作。

scala> import net.liftweb.util.Helpers._
import net.liftweb.util.Helpers._

scala> val html = <div class="top_level">
| <table>
| <tr>
| <td>Cell</td>
| </tr>
| </table>
| </div>
html: scala.xml.Elem =
<div class="top_level">
<table>
<tr>
<td>Cell</td>
</tr>
</table>
</div>


scala> val data = List(("id1", "cell 1"), ("id2", "cell 2"))
data: List[(java.lang.String, java.lang.String)] = List((id1,cell 1), (id2,cell 2))

scala> val sel = ".top_level" #> {
| data map { d =>
| ".top_level [id]" #> d._1 &
| "td *" #> d._2
| }
| }
sel: net.liftweb.util.CssSel = CssBind(Full(.top_level), Full(ClassSelector(top_level,Empty)))

scala> sel.apply(html)
res0: scala.xml.NodeSeq =
NodeSeq(<div class="top_level" id="id1">
<table>
<tr>
<td>cell 1</td>
</tr>
</table>
</div>, <div class="top_level" id="id2">
<table>
<tr>
<td>cell 2</td>
</tr>
</table>
</div>)

关于scala - 在 Lift 中,如何选择重复(自动复制)CssSel 转换中的顶级元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13825677/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com