No License

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video

Highlights from
XML Toolbox

  • toolbox_testfunction toolbox_test
  • strsplit.mfunction cstr = strsplit(strarr, ch)
  • unblank.m% UNBLANK(S) removes leading and trailing blanks from string S.
  • xml_format.mXML_FORMAT Convert a Matlab variable or struct into an XML string.
  • xml_formatany.mXML_FORMATANY Formats a matlab variable into an XML string.
  • xml_help.m
  • xml_load.mXML_LOAD Loads XML file and return contents as Matlab structure or variable
  • xml_parse.mXML_PARSE parses XML string and returns corresponding Matlab structure.
  • xml_parseany.mXML_PARSEANY parses XML strings and convert content into Matlab structure
  • xml_save.mXML_SAVE saves Matlab variables and data structures as XML
  • View all files
3.2 | 60 ratings Rate this file 65 Downloads (last 30 days) File Size: 225 KB File ID: #4278 Version: 1.0

XML Toolbox


Marc Molinari (view profile)


17 Dec 2003 (Updated )

Conversion of MATLAB data types to XML and vice versa.

| Watch this File

File Information

The XML Toolbox converts MATLAB data structures of any level of nesting into an XML string. It also reads most types of XML strings/files and converts these into a Matlab structure.
Six simple functions are provided for this task:
and help in xml_help.

This toolbox comes with an extensive pdf manual (35 pages).

Structures like this
>> = 'MyProject';
>> = 1234;
>> project.param.a = 3.1415;
>> project.param.b = 42;

can easily be converted with a command like str=xml_format(project,'off') to
result in:



This file inspired Nike+ Public Api/Web Interface In Matlab, Generate Xml, and Tinyxml2 Wrapper.

MATLAB release MATLAB 6.5 (R13)
Other requirements Tested under Matlab 6.5 (R13) and 7.0.1 (R14SP1). This is XML Toolbox Version 3.1.2.
Tags for This File   Please login to tag files.
Please login to add a comment or rating.
Comments and Ratings (82)
13 Mar 2017 Scott Stearns

Great potential, but doesn't work with reasonably current versions of MATLAB. Apparently need to use pcode to obfuscate the m files. Older obfuscation is no longer supported.

10 Feb 2017 Stian

Stian (view profile)

People who are still asking for the source code; I think it's time to let go and replace xml_toolbox with tinyxml2. Faster, works and easily to replace xml_toolbox with.

Comment only
27 Jan 2017 Jordan Sweer

Could you please regenerate the pcode or post the mcode?

Comment only
18 Oct 2016 Thomas Marullo

Has anyone been able to find a replacement or been able to replicate this code?

Comment only
22 Jun 2016 Ronaldo Palmeira

Dear Marc, post the source, please!

Comment only
10 Jun 2016 kabla002

Could you you please regenerate the pcode or better yet post the source.

01 Jun 2016 Thomas Marullo

Source code please for this. I still need to have R2014 installed to do parts of my work.

31 May 2016 David

David (view profile)

I love this toolbox but it is no longer supported by Matlab (2016a).

The P-code file
.\xml_toolbox\xml_load.p was
generated prior to MATLAB version 7.5 (R2007b) and is no longer supported.

marc, please release the source .m files or regenerate the p.files. Thanks!

11 Mar 2016 Benjamin

12 May 2015 Jordi Gil

Nice library. Easy to use.

30 Mar 2015 Cees Lambregts


much faster and will work in 2014+ (parseany/formatany functionality is however not available) other functionality is equal.

Comment only
12 Mar 2015 Uwe

Uwe (view profile)

This is an excellent toolbox - very easy to save structure arrays to XML and one can even load them back into the same types if the attributes switch is on, which is the default.

But from 2014b onwards, the Matlab Compiler requires that the source m-files are present when including p-files during compilation, which renders this toolbox useless for compiled applications, because the m-files are not available.

In light of this, is there any way that the author would consider making the m-files available?

Comment only
11 Feb 2015 Stian

Stian (view profile)

After updating to R2014b, this doesn't work anymore with Matlab Compiler.

02 Feb 2015 Peter bjerg

Can not work with Matlab Compiler. Fails due to warnings

28 Nov 2014 Ladislav Dobrovsky


03 Jul 2014 John

John (view profile)

@Joerg there is no reason to exchange XML between matlab and java, hook into java directly from matlab. Far (FAR) simpler.

Comment only
17 Oct 2013 Joerg Bretschneider

I would ask Marc to provide the m-files.
Seems as if he has dumped the project.

Seems to be great work - stable through releases, well structured and with simple interfaces. We have to test if it suits our needs, as we would have to exchange the XML between Matlab and Java...
An option to work further on the code would be great, Marc!

Comment only
03 Jul 2013 Varoujan

I have now tested this submission all the way up to R2013a. It works. The warnings people are talking about are just that "warnings". It still works.

Other than cluttering up the command window or the DOS window for the stand alone executables, functionally I have no issues.

Though I would agree that someone should generate up to date .p files but then I am not sure if it would make it unusable for people with earlier versions of Matlab.

If the author doesn't mind sharing the source code, that would solve the problem too.

Of course, best possible solution is for Matlab to include this functionality with built-in functions.

01 Feb 2013 Moses

Moses (view profile)

Needs to be updated for newer versions of Matlab!

31 Jan 2013 Michael

I like the submission a lot, nevertheless I get hte following error message:

Warning: The P-code file strsplit.p was generated prior to
MATLAB version 7.5 (R2007b) and will not be supported in a
future release. Use pcode to regenerate strsplit.p using
MATLAB R2007b or later.

Will there be an update?

Comment only
01 Nov 2012 Xilu Wang

02 Oct 2012 Zhuo Li

Zhuo Li (view profile)

This is powerful, very helpful. Thank you for the good work !!!

27 Jul 2012 Sebastian Holmqvist

Great tool! But it's struggling for me as I go above 1 MB of XML. 1.5 MB takes about 45 seconds with xml_parse(). Duplicating the data (3 MB) takes a whopping 170 seconds. That's almost 4 times longer for only twice the data!

Any tips for me how I can get it to speed up a bit? Profiler says that 75% of the time is spent inside of xml_parse (overheads etc), so it's in there somewhere.

26 Apr 2012 Hdaniel

20 Apr 2012 Michael

Completely useless!!!! Do not use!!! Closed-source software.

Comment only
07 Feb 2012 Xiaolong

I am switching to xmltools (also available from MATLAB Central).

This will be the last time I make my project dependent on a closed-source freeware.

24 Jan 2012 Joseph Areeda

I'm running R2011b and can't try this because the p code is incompatible.

Are there any other options?

Comment only
22 Jul 2011 Ad Client

buggy, no way to debug due to closed source.

23 Jun 2011 Xiaolong

Unable to interprete special characters like &gt; and &lt; in the xml file.

Comment only
23 Jun 2011 Xiaolong

05 Apr 2011 Charles Garfinkle

Unable to interpret elements with line breaks between attribute values. Also failed to correctly parse an XML tree composed of nested elements all of the same name and attributes (though the specific values of those attributes differed between elements).

14 Mar 2011 Andreas K.

With Matlab R2007b everything works find, but with R2010b I got the following warning-message...
>Warning: The P-code file strsplit.p was generated prior to MATLAB version 7.5 (R2007b) and will not be
supported in a future release. Use pcode to regenerate strsplit.p using MATLAB R2007b or later.

I can't regenerate those files with R2010b. I don't know why...

02 Feb 2011 Emil

Emil (view profile)

02 Feb 2011 Emil

Emil (view profile)

This is a great tool.. Whats the chance in getting an updated p-code?

Comment only
01 Nov 2010 Bhuvan

Bhuvan (view profile)

Hi guys i have doubt is it possible to import back the xml file which download earlier to simmechanics model back to cad model in xml format using this tool bar.

Exactly it is SimMechanics Model to CAD Assembly in xml format & viceversa

pl. help me in this same

Comment only
28 Oct 2010 Navid Samavati

Totally useful! Exactly what I was looking for! Thanks!

01 Oct 2010 Marc Molinari

Marc Molinari (view profile)

I have changed jobs and a rewrite and update of the XML toolbox will be available as soon as I find time for these... Please check back or add a watch to receive a notification.
If you require urgent specialised changes or integration, please contact me at

Comment only
24 Sep 2010 Marion Douglas

As of Matlab 2010b, xml_toolbox is useless since p-file obfuscation has changed in matlab, requiring the original source m-file to make new p-files from. Any plans to release updated p-files?

Comment only
24 Aug 2010 Thomas Marullo

Great job! This is a wonderful set of tools.

21 Jun 2010 Erfan

Erfan (view profile)

you have forgot to ignore the white spaces in the XML file dude (in the xml_load function)
doesn't work when there are gaps in the xml file

01 Apr 2010 Neil

Neil (view profile)

Very disappointing closed source software. I do not recommend at all.

03 Feb 2010 Thomas Schreiter

Regarding my last post. I found the troublemaker: saving a char with the value 0 leads to a missing closing tag:
Matlab: xml_save('foo.xml', char(0);
foo.XML: <?xml version="1.0"?>
<!-- Written on 03-Feb-2010 10:59:59 using the XML Toolbox for Matlab -->
<root xml_tb_version="3.1" idx="1" type="char" size="1 1">

As you can see, the root tag is not closed.

03 Feb 2010 Thomas Schreiter

Found one more annoying bug, that's why I downgraded my rating:
it produces invalid XML code in some cases (I have a structure containing some empty fields, the resulting XML file is ~500kB containing invalid XML code)

@Joao: There are M files included, but they contain only comments, no source code.

02 Feb 2010 João

João (view profile)

Great! It was useful for me many times now.
Schroen, I think you are mistaken. The source code IS included.

02 Feb 2010 Thomas Schreiter

Nice idea. But no source code provided, which might be OK if the program weren't buggy:
In some cases, saving a matrix containing doubles and nan's leads to the error "NaN's cannot be converted to logicals."

23 Dec 2009 Jesse Hopkins

Jesse Hopkins (view profile)

Does not handle XML files that have the same tag name repeated, since this uses the tag name as the field name for matlab structures. This tool appears to ignore all but the last tag of repeated tag names.

I prefer the output format of "XML parsing tools" (FX id 3074), which does handle this, however that one runs painstakingly slow and does not handle comments.

06 Oct 2009 Richard

I'm getting an error message for xml_load when running from command line:
"v = xml_load('Samoa.xml');
??? Attempt to execute SCRIPT xml_load as a function:

The file is in the current directory.

Comment only
06 Oct 2009 Rick Crawford

Is this supposed to work with cell arrays? I tried to use it with a cell array and it crashed.

Comment only
02 Feb 2009 Anna Kelbert

Thanks a lot! Much more efficient than the alternative xml_io_tools (although open source would of course be nice). However, it completely messes up character arrays. If you create an array with a char() function that consists of e.g. four character strings (size 4 x 400), the corresponding XML output is nonsense. On the other hand, writing separate lines as items creates a problem for other software which reads my XML files. There should be an option to concatenate array elements together in the XML file, rather than writing them out as separate 'item' elements.

21 Jan 2009 Kyo Sohma

correction: user 3 has the same topics that 4 has.

Comment only
21 Jan 2009 Kyo Sohma

I was trying to use xml_parseany from a big file, and it doesnt work properly. For example,

<user id='1'>
<topic id='t1'>
<user id='2'/>
<user id='3'>
<topic id='t3'>
<topic id='t4'>
<user id='4'/>

When this is parsed, user id 2 and 4 dont have topics, but when the struct is created these users have the topics from the last user that had topics.
In this case, user 2 has the same topics that user 1 has, and user 4 has the same topics that 4 has.

Comment only
06 Oct 2008 Guillaume Jacquenot

Good job, but the import of an xml file in MatLab may contain redundant data.

Here is an example, where the MatLab generated structure contain redundant data

<?xml version="1.0" ?>
<polygon id="polygon1" nVertices="3">
<segment n="1" x0=" 0.0" x1="966.0" y0=" 86.0" y1="142.0" />
<segment n="2" x0="966.0" x1="1983.0" y0="142.0" y1=" 0.0" />
<segment n="3" x0="1983.0" x1="0.0" y0="0.0" y1="86.0" />

17 Sep 2008 Gerard Sanromà

good!.. it gives better results than other XML Toolboxes that I have tried for converting .gxl files (graph exchange format) into matlab structures.. Thanks

02 Aug 2008 manoj loganathan


02 Aug 2008 lin chen

18 May 2008 hill how

13 Jan 2008 BAO BING

11 Jan 2008 Gerald Corzo

Does anyone know how the attributes doesnt read

Comment only
11 Nov 2007 Dil Djumanov

Hi, if TAG name has minus '-' then it gives the next error.
??? Error using ==> setfield
Error using ==> subsasgn
Invalid field name component.

Error in ==> C:\ProgramFiles\MATLAB71\toolbox\xml_toolbox\xml_parseany.p>xml_parseany at 154

Error in ==> C:\ProgramFiles\MATLAB71\toolbox\xml_toolbox\xml_parseany.p>xml_parseany at 163

Can it be fixed please.

06 Nov 2007 Jeremy Wilcox

This XML toolbox was great for my needs:
It allows an easy reading of XML files into matlab and the data handling is efficient.


28 Oct 2007 tuan hoang minh

03 Oct 2007 Jose Andrickson

Soy profor universitario y me gustaria probar las prestaciones de esta herramienta

28 Aug 2007 Maarten V

Very useful tool. One question: I have warnings that the p-files (28/01/2005) are older than the m-files (15/04/2005). Do I need to create new p-files, based on the m-files in the ZIP? Or is it better to do it not?

23 Aug 2007 bill law

It is really a useful tool, but why couldn't i find the file 'xml_toolbox.pdf'?

17 Aug 2007 K T

If I have:

a =

b: [3x3 struct]


a.b =
3x3 struct array with fields:

where each of the 3x3 struct array of ATTRIBUTE is:

k: 1 %(some number)
j: 1 %(another number)

The xml that is generated is not correct...It only generates xml for the first of the 3x3 array of structs.

Any idea how to get around this issue?

Thanks - Kartik

02 May 2007 �ris �lafsdóttir

It is a very effective function, but the drawback is that all the elements in the structure are cells and this cannot be changed. I need a structure of a certain format but have to convert every single element of the structure from cell to array.

02 Apr 2007 xia tian


08 Mar 2007 Almon Ing

It did the job for me, and my XML files are pretty complicated.

15 Dec 2006 Jaakko R

Buggy and closed source.

19 Nov 2006 Peter Cotton

Suggest either testing under more versions of Matlab (e.g. 64 bit) or making m-files available for others to do the same.

31 May 2006 Randy Bithell

It does what it is intended to do. The documentation was the only way I would have known how to get the CONTENT out of the structure. Since only p-files you cannot compile and make an *.exe if that matters to you. You can delete (or move) the m-files if the warning is bothering you, they are obviously just descriptions for when you call the function.

15 Mar 2006 A. Belani

A Warning stating that the p code is older than the m code can be received when running some functions from this toolbox. Such warnings can be disabled by using:

%Use the desired toolbox functions now.

Comment only
14 Feb 2006 Jaroslaw Tuszynski

Very nice interface, but has many problems:
1) slow - a file parsed by readxml in 13 sec took 8 min for xml_parseany
2) buggy - If you stray from examples than both reading and writing can produce wrong results, like invalid xml code.
3) lack of .m files prevents debugging

04 Oct 2005 Knoll Gernot

That was I'm searching for!
Best free tool what I ever seen

24 Aug 2005 Concern Matlab User

26 Jul 2005 Jose Andrickson

16 Jun 2005 Concern Reviewer

Good functionality, but the p-file coding limits it usability.

11 Jun 2005 lywhus lywhus

The functionality is good. But be aware it is not open source and the author does not intent to make the source available.
Please try to use XML4MAT v2.0 instead.

27 May 2005 Ken Doniger

Very simple and effective.
One small complaint: Matlab complains that the P-files are older than the M-files.

03 Nov 2004 Wilson Cheung

This is much easier to use than Matlab's built xmlread and xmlwrite which require you to be an expert handling XML DOM. It just works like you would expect it to work. The documentation and examples use code is good.

22 Oct 2004 Benjamin Davis

Concise and simple to use. Authors didn't fall into the "over do-it" trap of software tool development.

15 Sep 2004 Stefan Zimmerman

Just what I've been looking for - easy to use and powerful XML to Matlab converter! - Excellent tool.

13 Jan 2004

Removed password for .zip file.
"Please register at the given address."

15 Apr 2005

New version available. Does read XML attributes too.

20 Apr 2005

manual xml_toolbox.pdf now included.

Contact us