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.


BEISPIELE
        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)
