RU/XmlNodeSetValue

From Multi Theft Auto: Wiki
Jump to navigation Jump to search

Эта функция дает возможность присваивать значения к тегам в XML файлах.

Синтаксис

bool xmlNodeSetValue ( xmlnode theXMLNode, string value [, bool setCDATA = false] )            

Обязательные параметры

  • theXMLNode: XML узел в котором вы устанавливаете значение.
  • value: Строка-значение присваемая узлу.
ADDED/UPDATED IN VERSION 1.4.0 r6782:
  • setCDATA: A boolean indicating if you want the value to be enclosed inside CDATA tags.

Возвращает

Возвращает true если значение установлено успешно,false в противном случае.

Примеры

Click to expand [+]
Server Example
Click to collapse [-]
Client Example: Save and load from a clientside XML

This shows an example of a clientside XML file. You can use this to store user preferences and load them the next time the script loads. Almost always, you should have an options GUI for clients to interact with to set these values.

Since the XML will change, it should NOT be included in the resource's meta.xml file. MTA will think that file is corrupted and will download it again from the server. Instead, you should create the XML within the script, and then load it within the script on future script runs if it exists.

This xml will be created from the script following it below

<root>
    <hud_display>
        <IconSizeX>60</IconSizeX>
        <IconSizeY>60</IconSizeY>
    </hud_display>
    <hud_binds>
        <weaponSlot0>tab</weaponSlot0>
        <weaponSlot1>1</weaponSlot1>
    </hud_binds>
</root>

This script will create the xml or load it if it exists

function ClientResourceStart ()
	xmlRootTree = xmlLoadFile ( "userSettings.xml" ) --Attempt to load the xml file	

	if xmlRootTree then -- If the xml loaded then...
		xmlHudBranch = xmlFindChild(xmlRootTree,"hud_display",0) -- Find the hud sub-node
		xmlBindsBranch = xmlFindChild(xmlRootTree,"hud_binds",0) -- Find the binds sub-node
		outputChatBox ( "XML Found and Loaded" )
	else -- If the xml does not exist then...
		xmlRootTree = xmlCreateFile ( "userSettings.xml", "root" ) -- Create the xml file	
		xmlHudBranch = xmlCreateChild ( xmlRootTree, "hud_display" ) -- Create the hud sub-node under the root node
		xmlBindsBranch = xmlCreateChild ( xmlRootTree, "hud_binds" )-- Create the binds sub-node under the root node
		xmlNodeSetValue (xmlCreateChild ( xmlHudBranch, "IconSizeX"), "60" ) --Create sub-node values under the hud sub-node
		xmlNodeSetValue (xmlCreateChild ( xmlHudBranch, "IconSizeY"), "60" ) --Create sub-node values under the hud sub-node
		xmlNodeSetValue (xmlCreateChild ( xmlBindsBranch, "weaponSlot0"), "tab" ) --Create sub-node values under the binds sub-node
		xmlNodeSetValue (xmlCreateChild ( xmlBindsBranch, "weaponSlot1"), "1" ) --Create sub-node values under the binds sub-node
		outputChatBox ( "XML Created" )
	end

	--Retrieve a single sub-node name or value
	outputChatBox( "Node name: "..xmlNodeGetName (xmlFindChild(xmlHudBranch,"IconSizeX",0)), 0, 0, 255 ) --blue outputs
	outputChatBox( "Node Value: "..xmlNodeGetValue (xmlFindChild(xmlHudBranch,"IconSizeX",0)), 0, 0, 255 ) --blue outputs
	
        --Retrieve multiple sub-node names or values	
	xmlHudChildrenTable = xmlNodeGetChildren ( xmlHudBranch ) --Create a table of this branch's children
	for i,node in pairs(xmlHudChildrenTable ) do --Loop through the branch's children for sub-nodes
            outputChatBox( "Node name: "..xmlNodeGetName (node), 0, 255, 0 ) --green outputs
	    outputChatBox( "Node Value: "..xmlNodeGetValue(node), 0, 255, 0 ) --green outputs
	end
end
addEventHandler ( "onClientResourceStart", resourceRoot, ClientResourceStart )
 
function ClientResourceStop ()
	xmlSaveFile ( xmlRootTree ) --Save the xml from memory for use next time
	xmlUnloadFile ( xmlRootTree ) --Unload the xml from memory
	outputChatBox ( "Saved and unloaded the XML." )
end
addEventHandler ( "onClientResourceStop", resourceRoot, ClientResourceStop )

Смотрите также

Серверные функции

Клиентские функции

Общие функции

  • xmlCopyFile - копирует всё содержимое определённого узла в XML-документе в новый файл документа
  • xmlCreateChild - создаёт новый дочерний узел в узле XML
  • xmlCreateFile - создаёт новый XML-документ, который впоследствии можно сохранить в файл с помощью xmlSaveFile
ДО ВЕРСИИ 1.0.0 :
  • xmlCreateSubNode - создаёт подузел для указанного XML узла
  • xmlFindSubNode - возвращает именованный подузел определённого XML узла
  • xmlDestroyNode - удаляет узел XML из дерева узлов XML
  • xmlFindChild - возвращает именованный дочерний узел узла XML
  • xmlLoadFile - загружает XML-файл и возвращает узел, указав конкретный путь к файлу
  • xmlLoadString - создаёт XML узел из строкового ввода
  • xmlNodeGetAttribute - возвращает атрибут узла в файле конфигурации
  • xmlNodeGetAttributes - возвращает все аттрибуты выбранного XML узла
  • xmlNodeGetChildren - возвращает все дочерние элементы определенного XML узла или определенного дочернего узла
  • xmlNodeGetName - возвращает имя тега указанного XML узла
  • xmlNodeGetParent - возвращает родительский узел XML узла
  • xmlNodeGetValue - читает значения тегов в файлах XML
  • xmlNodeSetAttribute - редактирует атрибуты узла в файле конфигурации
  • xmlNodeSetName - задает имя тега указанного XML узла
  • xmlNodeSetValue - присваивает значения тегам в файлах XML
  • xmlSaveFile - сохраняет загруженный файл XML
  • xmlUnloadFile - выгружает XML файл из памяти