3
在this question荏苒拉鍊,提問者想轉換文檔這樣的:抗XML
<text>
The capitals of Bolivia are <blank/> and <blank/>.
</text>
進入這個:
<text>
The capitals of Bolivia are <input name="blank.1"> and <input name="blank.2">.
</text>
正如我在my answer there指出,Anti-XML的提供乾淨的解決這個問題。以下,例如,將工作重新命名空白元:
import com.codecommit.antixml._
val q = <text>The capitals of Bolivia are <blank/> and <blank/>.</text>.convert
(q \\ "blank").map(_.copy(name = "input")).unselect
不幸的是,以下不工作:
(q \\ "blank").zipWithIndex.map { case (el, i) => el.copy(
name = "input",
attrs = Attributes("name" -> "blank.%d".format(i + 1))
)}.unselect
因爲當然一旦我們zipWithIndex
-ed拉鍊我們沒有更長的拉鍊,只是IndexedSeq
- 我們不能有Zipper[(Node, Int)]
,因爲定義是trait Zipper[+A <: Node] ...
。
是否有上反XML拉鍊使用zip
或zipWithIndex
,做一些其他的操作與map
等,並與東西,仍然是一個拉鍊落得個乾淨的方式?