MaXML - An XML module for BlitzMaxCommunity Forums/Showcase/MaXML - An XML module for BlitzMax
| MaXML makes it easy to load, manipulate, and save XML files. MaXML is a very easy to use library of functions for manipulating xml data, including a fast xml parser (which parses roughly twice as fast as Microsoft Internet Explorer's XML viewer) and saver, including encryption support to protect your saved games, high scores, etc. from being edited by players. XML is a widely used and accepted format applied anywhere from word-processors to level builders.|
Ported to BlitzMax by Bryan Laroche (TeaVirus).
Click here for a BlitzBasic version of MaXML
Included with MaXML.zip is a function reference manual, and example code.
To install, simply drag the "maxml.mod" folder in the MaXML archive to your the mod/pub.mod folder under your BlitzMax install.
License: MaXML is completely free for commercial and personal use.
Download MaXML 1.9 Module (ZIP) - 48 KB
1.9 - Added file encryption (optional), and several other features, including xmlNode.ChildIndex(), xmlNode.GetNextSibling(), and xmlnode.GetPrevSibling().
1.81 - Version 1.81 fixes the incompatibility with BlitzMax 1.14
1.8 - Version 1.8 includes a major bug fix where the example.xml file would cause errors.
1.7 - Version 1.7 includes some misc. bug fixes.
1.6 - Now MaxML can load XML files with the standard "<?xml ... ?>" header tag. BlitzXML also saves it's XML files with a header for compatibility with other applications.
1.5 - Code ported from blitzbasic (BlitzXML) to blitzmax by Bryan Laroche (TeaVirus).
| Thanks, but there seems to be a problem or two.|
I downloaded the Zip, placed maxml.mod folder in mod/pub.mod and tried running example.bmx. I get the unhandled exception: "Attempt to index array element beyond array length" on line 17, which is doc1.Load("example.xml"). Max is using the mod, otherwise it'd report a problem with line 8's Local miscinfo:xmlNode.
Also, I can't open the included example.xml in Mozilla or IE without an error. They both complain about the next-to-last line: <miscinfo count="4"/>.
| Getting the same "Attempt to index array element beyond array length" error here.|
| Got the error too. And firefox didn't like example.xml at all.|
MaXML looks cool so I hope you fix the bug soon.
| did these problems get sorted out? I'd love to use this mod. |
| Not yet. I'll upload a new version as soon as it's fixed. |
| good idea John.J! A welcome addition to Blitzmax |
| You rock John! |
| Update: The bug has finially been fixed. Download the new version with the link above (now version 1.8) |
| 1.8 does not seem to work.|
I dropped it into mod folder and ran example. get error:
'Find the node that containd the information we want.
infonode = doc1.FindNode("info")
| I just updated to the latest BlitzMax version and got the error too. Apparently it worked with the old version of BlitzMax I had but doesn't work now for some reason. I'll see if I can track down the problem as soon as possible. |
| Update: BlitzMax 1.14 incompatibility fixed.|
It seems all I needed to do was rebuild the module with the new version, and it worked fine :)
| spot on. works fine now. nice work John J. this is a very useful addition to BMAX |
| Hi, this is great, thanks.|
I do have a couple of suggestions. I have also written a simple XML document parser in C++, and it's very similar to yours but I also have extended functions for getting / setting attributes /contents as different data types - makes life simpler when coming to use the library.
ie. node.GetIntData() / node.SetIntData()
node.GetFloatData() / nodeSetFloatData()
node.GetTextData() / node.SetTextData()
Also, the biggest difference is that I translate xml escape codes for markup characters... so,
SetData() would convert the following characters
< becomes <
> becomes >
" becomes "
' becomes '
& becomes &
also, non printables become
&#nn; (where nn is the ascii code)
GetData() then retranslates those &xxxx; type codes back into the actual characters.
| Brendane: Thanks for the suggestions. I'm currently adding the features you mentioned (and a few more) to MaXML and BlitzXML.|
&#nn; (where nn is the ascii code)
Is "nn" supposed to be hexadecimal?
| MaXML Version 1.9 Released!|
New features include:
+ Light encryption support, which guards against players from changing high-score data, etc.
+ New optional function variants of GetData, SetData, GetAttributeValue, and SetAttributeValue for specific data types (for example, GetDataI() gets integer data, GetDataF() gets float data, and GetDataS() gets string data).
+ xmlNode.GetChildIndex() added.
+ xmlNode.GetFirstChild() added, which can be used along with xmlNode.GetNextSibling() and xmlNode.GetPrevSibling() as an alternate way to cycle through node children.
+ xmlNode.GetNextSibling() added, which can be used as an alternate way of cycling through node children.
+ xmlNode.GetPrevSibling() added, which can be used as an alternate way of cycling through node children.
The new features will be added to BlitzXML soon.
| hey i cant load from a tbank anymore?? |
| NVM somehow i grabbed the wrong version. |