如何解析Rebol中的层次结构?

时间:2010-03-09 00:08:39

标签: rebol

我在任何和解析上重读了章http://www.rebol.com/docs/core23/rebolcore-15.html但是无法实现解析这种层次结构:它有可能吗?

<Multipage>
<tab id=1>
  <box id=1>
  </box>
</tab>
<tab id=2>
  <box id=2>
  Hello
  </box>
</tab>
<tab>
</tab>
<tab>
</tab>
</Multipage>

2 个答案:

答案 0 :(得分:2)

Gavin MacKenzie在http://www.rebol.org/view-script.r?script=xml-parse.r 1的xml-parse脚本将解析大多数XML数据。因为它是一个通用的解决方案,所以比一组特定XML文件的解析规则更复杂。

答案 1 :(得分:1)

是的,可能而且不是很难:

data: {...}

ws-chars: charset " ^/^M^-"
ws: [any ws-chars]

rule: [
    ws <Multipage> any [
        ws "<tab" opt [ws "id=" copy id to ">" (print ["tab id:" id])] ">" any [
            ws "<box" opt [ws "id=" copy value to ">" (print ["box id:" id])] ">"
                opt [copy text to "<" (if text [?? text])]
            </box>
        ]
        ws </tab>
    ]
    ws </Multipage> ws
]

parse/all data rule

运行此代码,您将获得输出:

tab id: "1"
box id: "1"
text: "^/  "
tab id: "2"
box id: "2"
text: "^/  Hello^/  "