XmlNodeGetChildren

From Multi Theft Auto: Wiki
Revision as of 11:46, 6 April 2008 by Arc (talk | contribs)
Jump to navigation Jump to search

This function returns all children of a particular XML node, or a particular child node.

Syntax

table/xmlnode xmlNodeGetChildren ( xmlnode parent, [ int index ] )

Required Arguments

  • parent: This is the xmlnode you want to retrieve one or all child nodes of.

Optional Arguments

  • index: If you only want to retrieve one particular child node, specify its (0-based) index here. For example if you only want the first node, specify 0; the fifth node has index 4, etc.

Returns

If index isn't specified, returns a table containing all child nodes. If index is specified, returns the corresponding child node if it exists. Returns false in case of failure.

Example

Click to collapse [-]
Server

Suppose you have an .xml file with random welcome messages:

<messages>
    <message>Welcome to the deathmatch server, enjoy your stay.</message>
    <message>Welcome. Be sure to get your free pizza at Matt's!</message>
    <message>Party going on at the LS beach, be there</message>
</messages>

To show a random message from this list to joining players, you could use the following code:

addEventHandler("onResourceStart", getResourceRootElement(getThisResource()),
    function()
        local xml = xmlLoadFile("welcome.xml")             -- open the XML file
        local messageNodes = xmlNodeGetChildren(xml)       -- get all child nodes of the root node (<messages>)
        g_WelcomeMessages = {}                             -- create a new global variable to store the welcome messages
        for i,node in ipairs(messageNodes) do              -- loop over all the message nodes
            g_WelcomeMessages[i] = xmlNodeGetValue(node)   -- retrieve the text in each node
        end
        xmlUnloadFile(xml)                                 -- close the XML file
    end
)

addEventHandler("onPlayerJoin", getRootElement(),
    function()
        local numMessages = #g_WelcomeMessages                        -- get the number of messages
        local message = g_WelcomeMessages[math.random(numMessages)]   -- pick a random message
        outputChatBox(message, source, 0, 255, 0)                     -- display it to the joining player
    end
)

See Also