OPTIONAL
EXPERIMENTAL
SYNOPSIS
        #include <xml.h>

        mixed* xml_parse(string xml)

BESCHREIBUNG
        Parst den angegebenen String <xml> als XML. Der String darf nur ein
        einziges Root-Tag enthalten, weitere Root-Tags werden ignoriert.

        Falls der String XML-konform war, so wird ein Array mit drei Elementen
        zurueckgegeben, dessen Elemente folgendermassen definiert sind:

            string XML_TAG_NAME
                Der Name des XML-Tags.

            mapping XML_TAG_ATTRIBUTES
                Alle Attribute dieses XML-Tags als ein Mapping mit dem
                jeweiligen Attributnamen als Schluessel und den Attributwert
                als der dazugehoerige String.
                
                Falls ein XML-Tag keine Attribute enthaelt, so ist dieses
                Element 0.

            mixed * XML_TAG_CONTENTS
                Der Inhalt des XML-Tags als ein Array. Dieses Array kann
                entweder Strings (reine Zeichendaten) oder Arrays
                als weitere Tags enthalten, welche wiederum diese
                drei Elemente besitzen.
                
                Falls das XML-Tag nichts enthaelt, so ist dieses Element 0.

        Falls der XML-String nicht wohlgeformt ist oder falls nicht genug Speicher
        zur Verfuegung steht, wird eine Fehlermeldung ausgegeben.

        Diese Funktion ist nur verfuegbar, wenn der Driver mit Iksemel-
        Unterstuetzung compiliert wurde. In diesem Fall ist das Makro
        __XML_DOM__ definiert.

BEISPIEL
        xml_parse("<abc/>")           -> ({ "abc", 0, 0 })
        xml_parse("<abc xyz="cde"/>") -> ({ "abc", ([ "xyz" : "cde" ]), 0 })

        xml_parse("<buch sprache="deutsch">" + 
                  "    <titel>Dies ist der Titel</titel>" + 
                  "    <kapitel>Dies ist ein Kapitel</kapitel>" + 
                  "    <kapitel>Das soll <b>fettgedruckt</b> sein.</kapitel>" +
                  "</buch>")

            -> ({ "buch"
                , ([ "sprache" : "deutsch" ])
                , ({ ({ "titel"
                      , 0
                      , ({ "Dies ist der Titel" })
                     })
                   , ({ "kapitel"
                      , 0
                      , ({ "Dies ist ein Kapitel" })
                     })
                   , ({ "kapitel"
                      , 0
                      , ({ "Dies soll "
                         , ({ "b"
                            , 0 
                            , ({ "fettgedruckt" })
                           })
                         , "sein."
                        })
                     })
                  })
               })

GESCHICHTE
        Eingefuehrt in LDMud 3.3.718.

SIEHE AUCH
        xml_generate(E)
