XmlNodeGetChildren

From Multi Theft Auto: Wiki
Revision as of 11:41, 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 retrieve a random message and display it whenever a player joins, you could use the following code:

addEventHandler("onResourceStart", getResourceRootElement(getThisResource()),
    function()
        local xml = xmlLoadFile("welcome.xml")             -- open the XML file
        g_WelcomeMessages = xmlNodeGetChildren(xml)        -- get all child nodes of the root node (<messages>) and put them in a global variable
        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