What is it? gmXML is a basic DOM-style XML parser for Game Maker. This means that it loads entire XML documents into memory and into a tree-like structure that can be read however you see fit.

However, gmXML is not a fully featured XML parser. It lacks some advanced features like DTDs (document type definitions), non-standard entities, and non-ANSI text formats.

Why use it? XML files are an excellent format for storing a lot of information in an understandable and easily editable form. Nothing but a plain text editor is necessary, but I recommend getting your syntax highlighting editor of choice.

If your game / project requires a sizable amount of data, then gmXML may be a wonderful thing for you. And even if it does not, you may still find a use for it reading / writing save files, generating documentation (gmDOC), or importing objects for mods.


  • DOM-style XML parser (with error checking!).
  • Partial XML syntax rules including elements, attributes, content, processing instruction (PI) tags, comments, escape sequences, and CDATA tags.
  • Load XML structures either from strings, from files, or pragmatically through scripts.
  • Save XML structures to files or strings with custom formatting styles.
  • Automatically define objects from XML files.
  • Traverse an XML structure both as a flat structure and as a tree.
  • Dynamically create, modify, and delete nodes in an XML structure.
  • Easily search an XML structure by 'path' (i.e. "root/options/graphics/").
  • Documentation generator add-on (gmDOC) that uses embedded XML and exports to HTML.

LICENSE: gmXML can be freely modified and distributed so long as it and derivative versions of it bear no additional cost. Basically, use gmXML as you wish so long as you don't charge for gmXML itself.

PLEASE NOTE This is a GM:S Version of the original by Shiny_. Original topic:

More info

End User Licence Agreement (EULA).

Changes in 1.1.0

Added constants.txt. You MUST add these constants in the "Macros" section in GM. The marketplace doesn't use macro's yet but they are required for this package to work.

Version 1.1.0. Published November 25, 2014

Created with GameMaker: Studio v1.4.1474

Age Rating: 4+

Average Rating

Your review

You can only review assets you've bought.


Anonymous 25 February 2017


Doesn't work at all


Amaroq S 19 February 2017

Contains obsolete functions, needs to be updated

This extension was built upon many obsolete functions which were used in GameMaker 8.1, but deprecated in GameMaker Studio. However, it was listed as a GameMaker Studio 1.4 extension.

I have to go in and fix all of the broken scripts, which is very time consuming.

You have promised over a year ago, maybe longer, to fix this, but you still have not. Please contact me as soon as you fixed this.


Amiram S 06 November 2016

This is a GameMaker 8 extension

It contains obsolete functions and cannot run in GMS. It shouldn't be in the marketplace.


Anton B 27 May 2016

doesn't work

I think it didn't work because my gamemaker is to new.


Mechanos C 15 March 2016

Doesn't work.

Currently broken. Obsolete functions "object_add", "object_delete", and "variable_global_exists". Will change this review if it's ever fixed.


Attila K 23 February 2015

not compatible

I have been really searching for an XML parsers and was so happy that I have found this... however I cannot use it in Game Maker Studio... I hope the creator will update it to work that would be great to use it!!


DukeSoft (Publisher) 25 March 2015

The source code is available so if you want you can help out :)


Warren S 24 December 2014

Far to much work to get working

This asset uses so many obsolete functions that its hardly worth the trouble of debugging. Looks very useful though if it functioned properly...

I finally got things working and it is pretty nice! ill change my review to a 3 star because it sort of made up for the work to fix it


DukeSoft (Publisher) 09 January 2015

Thanks for the information. Its an old version that doesn't work for 100% on GM:S.

I'll be releasing an update soon.


Fred D 20 December 2014

Lots of modifications needed to get working

This is the only XML parser asset however, so extra work is needed to get it working properly.

Biggest culprit is the extensive use of the "object_add()" function which you will need to replace by creating a blank object and passing its object_index to the script that uses it. Since you can't define new object types within GML anymore, a lot of functions using it are now unsupported anyway.

I know you just wrapped an XML parser someone else made to put on the Marketplace, but a certain level of polish is expected by the user and demanded by Yoyogames.

Also, you should build the documentation and bundle it with the asset for easy access. The information is included in all the scripts.

Would get +1 star if documentation was bundled with the asset and another +1 if the GM:S incompatibilities were corrected.


DukeSoft (Publisher) 09 January 2015

Thanks for the feedback. I know what you mean and I agree that this is not polished at all. I actually really needed the XML parser quickly in my game, and because GM does not support any good method of module installation (such as GMModular does) I put it on here. Will be releasing an update soon I guess.


Aaron F 04 December 2014

Extensive but not without some trouble

I personally haven't been able to get things to work, the demo throws a few errors for me but I am quite excited. Looking through what is included it is pretty clear how extensive it is. Most anything you'll need is here and I highly recommend picking it up. I look forward to when it is updated or I figure out a way around the issue I am finding. I can find so many uses for this.


DukeSoft (Publisher) 08 December 2014

It should be able to run on GM:S - as long as you include the constants (or Macro's, as YoYo calls them) into your project. There will be some deprecated function notices but it should still run nonetheless


Anonymous 24 November 2014

Can't Download

Due to illegal characters in the filename. Remove "|".

This review was left for a previous version of this asset.


DukeSoft (Publisher) 08 December 2014

This was to demonstrate a bug to the guys at YoYo, you had the wrong timing downloading the asset :( You can try again now :)

Package contents

Total size 34.1 KB

gmXML - XML Parser for 12 KB gmXML - XML Parser for GM
datafiles Rooms Scripts
DOC_Build.gml 7.26 KB scrXmlDemo.gml 8.56 KB scrXmlDemoDocument.gml 873 Bytes scrXmlDemoErrorCallback.gml 175 Bytes scrXmlDemoObjCtrl.gml 1.01 KB scrXmlDemoObjText.gml 263 Bytes XML_AddAttribute.gml 716 Bytes XML_AddCdata.gml 619 Bytes XML_AddComment.gml 603 Bytes XML_AddContent.gml 621 Bytes XML_AddElement.gml 613 Bytes XML_AddProcInstr.gml 632 Bytes XML_CleanUp.gml 614 Bytes XML_Clear.gml 546 Bytes XML_Clone.gml 1.65 KB XML_CloneAttribute.gml 877 Bytes XML_Copy.gml 1.04 KB XML_CountAttributes.gml 595 Bytes XML_CountChildren.gml 555 Bytes XML_CountDescendants.gml 634 Bytes XML_CountErrors.gml 274 Bytes XML_Create.gml 457 Bytes XML_Delete.gml 860 Bytes XML_DeleteAttribute.gml 1.48 KB XML_FindAttribute.gml 968 Bytes XML_FindFirstChildType.gml 945 Bytes XML_FlushErrors.gml 182 Bytes XML_GetAllContent.gml 1.12 KB XML_GetAllContentAndCdata.gml 1.09 KB XML_GetAllErrors.gml 416 Bytes XML_GetAttribute.gml 759 Bytes XML_GetChild.gml 739 Bytes XML_GetError.gml 269 Bytes XML_GetFirstAttribute.gml 356 Bytes XML_GetFirstChild.gml 574 Bytes XML_GetLastAttribute.gml 390 Bytes XML_GetLastChild.gml 624 Bytes XML_GetLevel.gml 616 Bytes XML_GetName.gml 682 Bytes XML_GetNext.gml 1001 Bytes XML_GetOption.gml 852 Bytes XML_GetParent.gml 552 Bytes XML_GetPrev.gml 417 Bytes XML_GetRoot.gml 502 Bytes XML_GetType.gml 1.35 KB XML_GetValue.gml 707 Bytes XML_Initialize.gml 1.08 KB XML_InsertAttribute.gml 1.98 KB XML_InsertCdata.gml 1.02 KB XML_InsertComment.gml 1.19 KB XML_InsertContent.gml 874 Bytes XML_InsertElement.gml 1.09 KB XML_InsertProcInstr.gml 1.16 KB XML_IsInitialized.gml 325 Bytes XML_LoadFile.gml 918 Bytes XML_LoadString.gml 411 Bytes XML_SaveFile.gml 741 Bytes XML_SaveFileFormatted.gml 1.51 KB XML_SaveString.gml 466 Bytes XML_SaveStringFormatted.gml 698 Bytes XML_SearchPath.gml 2.56 KB XML_SetName.gml 727 Bytes XML_SetOption.gml 2.81 KB XML_SetValue.gml 722 Bytes XML_XmlToObject.gml 630 Bytes XML_XmlToObjectFiltered.gml 2.9 KB _DOC_CompareScript.gml 544 Bytes _DOC_Error.gml 240 Bytes _DOC_EscapeText.gml 967 Bytes _DOC_ExpandType.gml 641 Bytes _DOC_FormScript.gml 4.37 KB _DOC_GetTagContents.gml 3.59 KB _DOC_GetTypeAttribute.gml 693 Bytes _DOC_GlueDoc.gml 1.69 KB _DOC_INDEX.gml 1.13 KB _DOC_OutputExtDefs.gml 2.09 KB _DOC_OutputScripts.gml 3.88 KB _DOC_ParseDoc.gml 3.61 KB _DOC_ParseIndex.gml 401 Bytes _DOC_ScriptError.gml 379 Bytes _DOC_SortList.gml 1009 Bytes _DOC_SortScripts.gml 1.69 KB _DOC_StrCompare.gml 901 Bytes _DOC_TEMPLATE.gml 320 Bytes _DOC_TEMPLATE_SYS.gml 325 Bytes _DOC_TextToBool.gml 756 Bytes _DOC_TypeToExtType.gml 654 Bytes _XML_CharIsDec.gml 389 Bytes _XML_CharIsHex.gml 761 Bytes _XML_CharIsName.gml 617 Bytes _XML_CharIsNameStart.gml 514 Bytes _XML_CharIsWhitespace.gml 564 Bytes _XML_CommentIsValid.gml 363 Bytes _XML_ContentIsValid.gml 363 Bytes _XML_CopyNode.gml 1.54 KB _XML_CountDescendants.gml 1.06 KB _XML_DeleteNode.gml 1.17 KB _XML_EntityToChar.gml 723 Bytes _XML_FormComment.gml 361 Bytes _XML_FormContent.gml 358 Bytes _XML_FormTagAttribute.gml 576 Bytes _XML_FormTagAttributeList.gml 546 Bytes _XML_FormTagAttributeValue.gml 420 Bytes _XML_FormTagBegin.gml 1009 Bytes _XML_FormTagEnd.gml 352 Bytes _XML_GetLastChildAbsolute.gml 814 Bytes _XML_HexCharToNum.gml 911 Bytes _XML_HexStrToNum.gml 819 Bytes _XML_IdentIsValid.gml 749 Bytes _XML_InsertContent.gml 984 Bytes _XML_InsertElement.gml 985 Bytes _XML_LinkNode.gml 1.61 KB _XML_MapEvents.gml 3.75 KB _XML_Parse.gml 6.55 KB _XML_ParseError.gml 531 Bytes _XML_ParseExpectDec.gml 767 Bytes _XML_ParseExpectEntity.gml 2.22 KB _XML_ParseExpectHex.gml 776 Bytes _XML_ParseExpectIdent.gml 671 Bytes _XML_ParseExpectStr.gml 677 Bytes _XML_ParseExpectText.gml 570 Bytes _XML_ParseGetChar.gml 474 Bytes _XML_ParseGetTextParsed.gml 2.99 KB _XML_ParseNestUp.gml 442 Bytes _XML_ParseReadAttribute.gml 1.07 KB _XML_ParseReadCdata.gml 791 Bytes _XML_ParseReadComment.gml 986 Bytes _XML_ParseReadContent.gml 628 Bytes _XML_ParseReadDoctype.gml 900 Bytes _XML_ParseReadElementEndTag.gml 1.59 KB _XML_ParseReadElementStartTagOpen.gml 1.07 KB _XML_ParseReadElementTagClose.gml 657 Bytes _XML_ParseReadPiTagClose.gml 493 Bytes _XML_ParseReadPiTagOpen.gml 1.12 KB _XML_ParseSkipChar.gml 344 Bytes _XML_ParseSkipChar2.gml 503 Bytes _XML_ParseSkipText.gml 1.06 KB _XML_ParseSkipWhitespace.gml 315 Bytes _XML_PushError.gml 639 Bytes _XML_ReplaceUnsafeChars.gml 1.13 KB _XML_StrIsEntityName.gml 583 Bytes _XML_TypeHasAttributes.gml 401 Bytes _XML_TypeHasBeginTag.gml 443 Bytes _XML_TypeHasChildren.gml 400 Bytes _XML_TypeHasContent.gml 350 Bytes _XML_TypeHasEndTag.gml 351 Bytes _XML_TypeHasName.gml 445 Bytes _XML_TypeHasValue.gml 503 Bytes _XML_UnlinkNode.gml 601 Bytes _XML_XmlToString.gml 1.69 KB

What is the issue?

Back to Top