XmlNodeGetChildren: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
(Removed deprecated flag. If that was a mistake, sorry, but it seemed odd for a completely new function to be deprecated when nothing else does the same job.)
m (→‎Example: fixed syntax highlighting)
Line 19: Line 19:
<section name="Server" class="server" show="true">
<section name="Server" class="server" show="true">
Suppose you have an .xml file with random welcome messages:
Suppose you have an .xml file with random welcome messages:
<syntaxhighlight lang="xml">
<syntaxhighlight lang="lua" lang="xml">
<messages>
<messages>
     <message>Welcome to the deathmatch server, enjoy your stay.</message>
     <message>Welcome to the deathmatch server, enjoy your stay.</message>
Line 28: Line 28:


To show a random message from this list to joining players, you could use the following code:
To show a random message from this list to joining players, you could use the following code:
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua" lang="lua">
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()),
addEventHandler("onResourceStart", getResourceRootElement(getThisResource()),
     function()
     function()

Revision as of 19:38, 29 November 2009

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