如何在 Freeplane 父节点中连接所有子节点的匹配属性?

How do I join matching attributes of all child nodes in Freeplane parent node?

提问人:skeetastax 提问时间:10/29/2023 更新时间:10/29/2023 访问量:13

问:

Freeplane 文件是 XML,它们显然使用脚本,但我无法弄清楚如何使用父节点中的公式返回属性(作为文本字符串)。主要帮助页面在这里: https://docs.freeplane.org/scripting/Formulas.htmlgroovy

假设我有以下树结构:

rootNode
    |        +---child0
    |        |
    +--------+---child1
             |
             +---child2

现在,我想向 和 添加属性,以便:rootNodechildren

rootNode:
    |  +->attr[sum=children.sum(0){ it['size'].num0 }]
    |  +->attr[colours=children.join(";"){ it['colour'].text }]
    |
    |        +---child0:
    |        |     +->attr[colour='red']
    |        |     +->attr[size=3]
    |        |
    +--------+---child1:
             |     +->attr[colour='green']
             |     +->attr[size=4]
             |
             +---child2:
                   +->attr[colour='blue']
                   +->attr[size=5]

其中 和 .rootNode['sum'] == 12rootNode['colours'] == 'red;green;blue'

该操作适用于数字子属性:sumenter image description here

...但我不知道如何对所有子项的文本属性进行处理:joinenter image description here

我试过:

=children.join(";"){ it['colour'].text }
=children.join(";"){ it['colour'] }
=children.text(){ it['colour'].join(";") }
=children.gettext(){ it['colour'].join(";") }
=children(){ it['colour'].join(";") }
=children.details(){ it['colour'].join(";") }

...到目前为止,唯一会导致错误的公式:

=children.each{ it['colour'].text }.join(';')

enter image description here

还有其他建议吗?

XML XPath 属性 父子 自由平面

评论


答: 暂无答案