我面前有一个任务,我有一个 XML 文档,我需要以系统的方式将它转换为另一个 XML 文档 - 将标签 Foo 更改为标签 Bar,将所有带有name="frob"
属性的 Qux 标签更改为 Frob 标签,等等. 我对如何使用 XSLT 一无所知,但我对自己说——嘿,如果我必须对基于树的数据进行一系列转换,那听起来像是 Lisp 擅长的事情!
所以我有一大块 XML - 例如:
<Object>
<field name="id">100520</field>
<field name="type_id">77</field>
<field name="has_extras"></field>
<field name="author_id">7</field>
<field name="summary">To Sir Duke, with love</field>
</Object>
我啜饮xml-parse tag
并得到:
(Object nil "\n "
(field
((name . "id"))
"100520")
"\n "
(field
((name . "type_id"))
"77")
"\n "
(field
((name . "has_extras")))
"\n "
(field
((name . "author_id"))
"7")
"\n "
(field
((name . "summary"))
"To Sir Duke, with love")
"\n ")
我无法弄清楚如何处理那棵树以使其成为我想要的形状。assoc
我目前的
尝试很脆弱 - 注重cxr
功能。CLdestructuring-bind
似乎是我想要的,但我不知道如何应用它。我正在尝试将上述结构转换为:
(Object
(id "100520")
(type_id "77")
(has_extras "")
(author_id "7")
(summary "To Sir Duke, with love"))
destructuring-bind
实际上是我需要的工具吗?- 如果是这样,我应该如何应用它来从我的数据的一种形状到另一种形状?
- 如果没有,什么是正确的工具?