OSDN Git Service

change list structure of xml data.
authorvisor <visor@users.sourceforge.jp>
Wed, 23 Jun 2010 14:50:02 +0000 (23:50 +0900)
committervisor <visor@users.sourceforge.jp>
Wed, 23 Jun 2010 14:50:02 +0000 (23:50 +0900)
modules/ml-xml.cc

index c3e9420..f20418b 100644 (file)
@@ -73,10 +73,18 @@ public:
        a.append (newMNode_sym (new ustring (fixUTF8 (ustring (name)))));
        a.append (NULL);
        for (; *atts; ) {
+#if 0
            a.append (newMNode_sym (new ustring (fixUTF8 (ustring (*atts)))));
            atts ++;
            a.append (newMNode_str (new ustring (fixUTF8 (ustring (*atts)))));
            atts ++;
+#endif
+           MNode*  c = new MNode;
+           c->set_car (newMNode_sym (new ustring (fixUTF8 (ustring (*atts)))));
+           atts ++;
+           c->set_cdr (newMNode_sym (new ustring (fixUTF8 (ustring (*atts)))));
+           atts ++;
+           a.append (c);
        }
        ptr.push_back (a.release ());
        mode.push_back (M_START);
@@ -230,6 +238,7 @@ static void  xmlWrite (MotorOutput* out, MNode* list) {
            c = list->car ();
            d = list->cdr ();
            out->out_raw (CharConst ("<"))->out_toHTML_noCtrl (*name);
+#if 0
            while (d && d->isCons ()
                   && d->cdr () && d->cdr ()->isCons ()) {
                out->out_raw (uSPC)
@@ -239,6 +248,23 @@ static void  xmlWrite (MotorOutput* out, MNode* list) {
                    ->out_raw (uQ2);
                d = d->cdr ()->cdr ();
            }
+#endif
+           while (d && d->isCons ()) {
+               if (d->car () && d->car ()->isCons ()) {
+                   out->out_raw (uSPC)
+                       ->out_toHTML (to_string (d->car ()-> car()))
+                       ->out_raw (CharConst ("=\""))
+                       ->out_toHTML (to_string (d->car ()->cdr ()))
+                       ->out_raw (uQ2);
+               } else {
+                   out->out_raw (uSPC)
+                       ->out_toHTML (to_string (d->car ()))
+                       ->out_raw (CharConst ("=\""))
+                       ->out_toHTML (to_string (d->car ()))
+                       ->out_raw (uQ2);
+               }
+               d = d->cdr ();
+           }
            if (c) {
                out->out_raw (CharConst (">"));
                if (c->isStr ()) {