Lisp数据格式化为xml

时间:2013-01-06 12:08:54

标签: xml lisp

我是lisp的新手,我似乎无法找到如何将从txt文件中读取单词的格式化为xml的示例。

示例:

tag1
tag2 word2
tag1 word3
tag1 word4

我想要退出文件:.xml

<tag1>
   <tag2>word2</tag2>
</tag1>
<tag1>word3</tag1>
<tag1>word4</tag1>

或类似的东西。谢谢你的帮助。

1 个答案:

答案 0 :(得分:1)

使用CXML和SPLIT-SEQUENCE库,您可以这样做:

(defun write-xml (input-stream output-stream)
  (cxml:with-xml-output
      (cxml:make-character-stream-sink output-stream
                                       :indentation 2 :canonical nil)
    (loop :for line := (read-line input-stream nil) :while line :do
       (destructuring-bind (tag &optional text)
           (split-sequence:split-sequence #\Space line)
         (cxml:with-element tag
           (when text
             (cxml:text text)))))))

结果会略有不同:

CL-USER> (with-input-from-string (in "tag1
tag2 word2
tag1 word3
tag1 word4")
           (write-xml in *standard-output*))
<?xml version="1.0" encoding="UTF-8"?>
<tag1/>
<tag2>
  word2</tag2>
<tag1>
  word3</tag1>
<tag1>
  word4</tag1>

你剩下的就是弄清楚如何处理代表中元素的嵌套......